我有一個包含大量 PDF 檔案的目錄,其中一些位於子目錄中(可以擴展到幾層深度)。我想將所有匹配的檔案移動*.pdf
到名為 的單一輸出資料夾papers
。
我怎樣才能做到這一點?
答案1
如果您bash
在最新版本中使用,您可以從以下globstar
選項中受益:
shopt -s globstar
mv **/*.pdf papers/
答案2
find /bunchopdfs -name "*.pdf" -exec mv {} /papers \;
這是我做的一個測試
$ ls -R
.:
a aaa bbb.pdf pdfs
./a:
foo.pdf
./pdfs:
請注意文件“aaa bbb.pdf”。
$ find . -name "*pdf" -exec mv {} pdfs \;
$ ls -R
.:
a pdfs
./a:
./pdfs:
aaa bbb.pdf foo.pdf
答案3
find -print0 /directory/with/pdfs -iname "*.pdf" | xargs -0 mv -t /papers
(類似於另一個答案,但我更喜歡 pipeline/xargs/mv ...對我來說更直觀)
僅供參考,我在多個目錄和多個 pdf 檔案上成功執行了上述一行腳本。
答案4
如果您只深入搜尋一個目錄,您可以這樣做:
mkdir <destination>
mv */*.pdf <destination>
其中<destination>
代表某個目錄。mv
不會自動為您建立目錄。