Câu trả lời:
Nếu bạn sử dụng bash
trong phiên bản gần đây, bạn có thể kiếm lợi từ globstar
tùy chọn:
shopt -s globstar
mv **/*.pdf papers/
find /bunchopdfs -name "*.pdf" -exec mv {} /papers \;
Đây là một bài kiểm tra tôi đã làm
$ ls -R
.:
a aaa bbb.pdf pdfs
./a:
foo.pdf
./pdfs:
Lưu ý tập tin "aaa bbb.pdf".
$ find . -name "*pdf" -exec mv {} pdfs \;
$ ls -R
.:
a pdfs
./a:
./pdfs:
aaa bbb.pdf foo.pdf
"{}"
để xử lý tên tập tin có chứa khoảng trắng?
find -print0 /directory/with/pdfs -iname "*.pdf" | xargs -0 mv -t /papers
(tương tự như câu trả lời khác nhưng tôi thích pipe / xargs / mv ... trực quan hơn đối với tôi)
FYI, tôi đã thực hiện thành công đoạn script một dòng trên nhiều thư mục và nhiều tệp pdf.
-print0
đối số vào kết quả tìm kiếm và -0
xargs.
Đối với dòng lệnh Windows (cmd.exe), bạn có thể sử dụng:
for /F "usebackq delims==" %j IN (`dir /s /b *.pdf`) do copy "%j" c:\target_dir
Nếu bạn chỉ tìm kiếm một thư mục sâu, bạn có thể làm:
mkdir <destination>
mv */*.pdf <destination>
nơi <destination>
đại diện cho một số thư mục. mv
sẽ không tự động tạo một thư mục cho bạn.
a/x.pdf
vàb/x.pdf
?