%20%E5%86%85%E3%81%AE%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%20PDF%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%8D%98%E4%B8%80%E3%81%AE%E5%87%BA%E5%8A%9B%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AB%E5%86%8D%E5%B8%B0%E7%9A%84%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
多数の 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
(他の回答と似ていますが、私にとっては pipe/xargs/mv の方が直感的です)
参考までに、上記の 1 行のスクリプトを複数のディレクトリと複数の PDF ファイルで正常に実行しました。
答え4
1 つのディレクトリの深さだけを検索する場合は、次のようにします。
mkdir <destination>
mv */*.pdf <destination>
ここで、<destination>
はディレクトリを表します。mv
は自動的にディレクトリを作成しません。