Cách 1: Trong trình duyệt tệp đồ họa của bạn, sử dụng chế độ xem dạng cây
Tôi cho rằng mục tiêu thực tế của bạn là đưa ra lựa chọn cho mỗi tệp và không nói đúng để được nhắc . Tuy nhiên, nếu bạn muốn được nhắc về từng tệp trong một thiết bị đầu cuối, hãy xem Cách 2 bên dưới.
Hầu hết các trình duyệt tệp đồ họa hỗ trợ chế độ xem dạng cây trong đó bạn có thể xem nhiều cấp của phân cấp thư mục cùng nhau. Bạn có thể sao chép hoặc di chuyển các tệp ra khỏi chế độ xem này, riêng lẻ hoặc bằng cách chọn chúng và sau đó vận hành trên toàn bộ lựa chọn. Điều này hoạt động ngay cả với các tập tin từ nhiều thư mục.
Trong một số trình duyệt tệp, người ta phải vào menu Tùy chọn để bật chế độ xem dạng cây. Trong Caja, trình duyệt tệp MATE, trình duyệt này luôn được bật trong chế độ xem danh sách. Nhấp vào Xem → Danh sách (hoặc nhấn Ctrl+ 2) để chuyển sang chế độ xem danh sách. Mỗi thư mục có một hình tam giác nhỏ bên phải ở bên trái của nó, cho thấy nó có thể được mở rộng. Để mở rộng thư mục, nhấp vào hình tam giác đó hoặc nhấn phím →(mũi tên phải) khi thư mục được chọn. Trong ví dụ này, tôi đã chọn tất cả từng cái một và đang kéo tất cả chúng cùng một lúc đích đến của chúng:
Giả sử nguồn và đích nằm trên cùng một ổ đĩa, kéo di chuyển theo mặc định. Nếu bạn muốn sao chép thay vào đó, bạn sẽ giữ Ctrlphím.
Về lý thuyết, thật dễ dàng để sửa lỗi khi sử dụng phương pháp này, bởi vì hầu hết các trình duyệt tệp (bao gồm cả Caja) đều hỗ trợ Ctrl+ Zđể hoàn tác các hành động gần đây, bao gồm các hành động hàng loạt. Tuy nhiên, tôi đã gặp may mắn với điều đó. Đôi khi các tập tin trở lại vào thư mục sai.
Tin tốt là bạn dường như đang làm việc với hầu hết các tài liệu văn bản, có xu hướng nhỏ, vì vậy bạn có thể tạo một bản sao lưu bổ sung với tar
lần đầu tiên mà không gặp nhiều rắc rối. Tôi đề nghị làm điều đó bất kể bạn sử dụng phương pháp nào.
Cách 2 : find
Lệnh với -ok
hành động
Nó được sử dụng phổ biến find
để tìm các tệp và chuyển các đường dẫn của chúng tới một lệnh bên ngoài tùy ý với các hành động -exec
và -execdir
. Nhưng find
cũng có -ok
và -okdir
nhắc nhở đó trước mỗi lần họ chạy một lệnh. Nếu bạn thực sự muốn được nhắc trong một thiết bị đầu cuối về mỗi tệp, tôi nghĩ rằng đây là cách để đi.
Khi được thực hiện để tạo ra các hiệu ứng tương tự như được hiển thị ở trên, nó trông như thế này:
ek@Gnar:~$ find Texts -xtype f -ok mv -t 'Glorious Destination Folder' {} \;
< mv ... Texts/Robert Frost/New Hampshire.pdf > ? y
< mv ... Texts/Robert Frost/In The Clearing.pdf > ? n
< mv ... Texts/Helen Keller/The Story of My Life.pdf > ? y
< mv ... Texts/Saki/The Short Stories of Saki.pdf > ? y
< mv ... Texts/Jane Austen/Sense and Sensibility.pdf > ? n
< mv ... Texts/Jane Austen/Pride and Prejudice.pdf > ? y
< mv ... Texts/Richard Connell/The Stolen Crime.pdf > ? n
< mv ... Texts/Richard Connell/The Most Dangerous Game.txt > ? y
< mv ... Texts/Mary Wollstonecraft Shelley/Mathilda.epub > ? n
< mv ... Texts/Mary Wollstonecraft Shelley/Frankenstein: Or, The Modern Prometheus.pdf > ? y
< mv ... Texts/W. E. B. Du Bois/The Souls of Black Folk.pdf > ? n
< mv ... Texts/W. E. B. Du Bois/Darkwater: Voices from within the Veil.htm > ? y
Thay thế Texts
bằng thư mục nguồn (có thể chỉ là .
nếu bạn đang cd
truy cập nó) và Glorious Destination Folder
với thư mục đích thực tế.
Điều này chạy một lệnh cho mỗi tệp; không giống -exec
và -execdir
, -ok
và -okdir
không hỗ trợ +
thay thế \;
để vượt qua nhiều đường dẫn tìm thấy trong cùng một lệnh. Do đó, bạn không cần phải sử dụng -t dest
hình thức mv
. Tôi đề nghị làm như vậy dù sao, tuy nhiên, cả hai nói chung với find
và đặc biệt là trong tình huống này nên nhắc nhở trông giống như các lệnh họ đang thúc đẩy về.
Vì lệnh đó được viết, nếu find
gặp một liên kết tượng trưng mà cuối cùng trỏ đến một tệp thông thường, nó (liên kết, không phải mục tiêu) được di chuyển thay vì bỏ qua. Nếu bạn thực sự muốn vận hành chỉ một tệp thông thường, hãy sử dụng -type f
thay vì -xtype f
.
Bạn có thể muốn làm điều này trong một script
phiên để bạn có thể tìm ra điều gì đã xảy ra nếu bạn mắc lỗi. Nhưng một lần nữa, không có lý do để không có một bản sao lưu.
Cách 3: Tạo một bảng kê khai và chỉnh sửa nó
Ít nhất là miễn là các tệp không có dòng mới trong tên của chúng, bạn có thể bắt đầu bằng cách sử dụng một find
lệnh đơn giản để tạo tệp kê khai - một tệp liệt kê tên của các tệp mà bạn (trong trường hợp này có khả năng) quan tâm :
find Texts -xtype f >manifest
Thay thế manifest
bằng bất kỳ tên nào bạn thích cho tệp liệt kê các tệp đang xem xét (và điều chỉnh các hướng còn lại cho phù hợp).
Như trên, thay thế Texts
bằng thư mục nguồn thực tế của bạn, có thể là .
nếu bạn đã cd
vào nó. Tuy nhiên, nếu Texts
là một đường dẫn tương đối (bao gồm cả nếu nó .
) thì bạn nên đảm bảo ở cùng một vị trí sau này khi bạn thực sự thực hiện các động tác.
Sau khi chạy find
lệnh đó , mở manifest
trong trình soạn thảo văn bản. Đây có thể là nano
, vim
, emacs
, gedit
, pluma
, vv Trong các biên tập viên, bình luận ra các dòng tên tập tin mà bạn không muốn di chuyển bằng cách đặt một #
vào đầu họ. Một số biên tập viên sẽ làm nổi bật những dòng đó một cách khác nhau ngay cả khi nó không nhận ra tệp của bạn ở bất kỳ định dạng nào mà nó biết có nhận xét. Mặc dù vậy, hầu hết sẽ không, và lý do thực sự tôi khuyên bạn nên làm theo cách này là bạn, với tư cách là một con người, có khả năng có kinh nghiệm nhận xét các dòng trong các tệp cấu hình (và có lẽ trong mã nguồn). Tôi nghĩ rằng đây là trực quan hơn, và ít lỗi hơn, hơn nó sẽ được đánh dấu dòng bạn làm muốn di chuyển.
Tất nhiên, thay vào đó, bạn chỉ có thể xóa các dòng cho các tệp bạn không muốn di chuyển. Ưu điểm của việc nhận xét chúng là nó sẽ rõ ràng hơn về những gì bạn đã làm.
Trong ví dụ của tôi, đây là nội dung của tệp sau khi tôi chỉnh sửa:
Texts/Robert Frost/New Hampshire.pdf
# Texts/Robert Frost/In The Clearing.pdf
Texts/Helen Keller/The Story of My Life.pdf
Texts/Saki/The Short Stories of Saki.pdf
# Texts/Jane Austen/Sense and Sensibility.pdf
Texts/Jane Austen/Pride and Prejudice.pdf
# Texts/Richard Connell/The Stolen Crime.pdf
Texts/Richard Connell/The Most Dangerous Game.txt
# Texts/Mary Wollstonecraft Shelley/Mathilda.epub
Texts/Mary Wollstonecraft Shelley/Frankenstein: Or, The Modern Prometheus.pdf
# Texts/W. E. B. Du Bois/The Souls of Black Folk.pdf
Texts/W. E. B. Du Bois/Darkwater: Voices from within the Veil.htm
Sau đó, bạn có thể lọc ra các dòng nhận xét grep
và đưa ra kết quả xargs
để chuyển chúng tới mv
:
grep -Pv '^\s*#' manifest | xargs -d '\n' mv -t 'Glorious Destination Folder'
Như trên, thay thế Glorious Destination Folder
bằng tên của điểm đến thực tế. Đó là nó; các tập tin của bạn được di chuyển. Tất nhiên bạn có thể viết echo
trước mv
để xem các lệnh sẽ được chạy trước, nếu bạn muốn.
Cách thức hoạt động của lệnh là:
- Các
grep
dòng lệnh đầu ra từ manifest
đó không ( -v
) bắt đầu ( ^
) với tùy chọn ( *
) khoảng trắng ( \s
) tiếp theo là một chữ #
nhân vật. Các -P
cờ chọn PCRE là phương ngữ của biểu thức thông thường (cho phép \s
mà tôi xem xét dễ đọc hơn so với truyền thống [[:space:]]
).
- Các
xargs
lệnh chia đầu vào của nó (mà là sản phẩm của grep
) vào các lĩnh vực newline-chấm dứt ( -d '\n'
), sau đó dán từng lĩnh vực (không có xuống dòng chấm dứt) như là một lập luận riêng biệt ở phần cuối của lệnh mv -t 'Glorious Destination Folder'
, mà nó chạy.
-ok
IMHO câu trả lời hay nhất