すべてのPDFファイルを以前に存在しなかった別のディレクトリに移動します。

すべてのPDFファイルを以前に存在しなかった別のディレクトリに移動します。

ファイルを一括移動する簡単な方法を作成しており、2つの方法を試しました。

#(1)
find . -name '*.pdf' | xargs -I{} mkdir pdfs; mv {} pdfs 

#(2)
find . -name '*.pdf' -exec mv {} pdfs \+

最初の方法は驚くべきことに「時々」動作しましたが、PDFを含むフォルダを何度も削除してPDFを親ディレクトリに戻した後、突然動作が停止しました。

次のエラーが発生します。

mv: rename {} to pdfs: No such file or directory
xargs: unterminated quote

2番目の方法は次のエラーを生成します。

find: -exec: no terminating ";" or "+"

修正する:

私は次のように動作するようにしました。

find . -name '*.pdf' -exec mv "{}" pdfs \;

ただし、次のようにディレクトリを作成してファイルを1行に移動したい場合は機能しません。

find . -name '*.csv' -exec mkdir -p csvs && mv "{}" csvs \;

検索: -exec: ";"または「+」は終了しません。

ディレクトリを作成して移動する方法は?

ベストアンサー1

あなたの状況が本当に単純であると仮定すると(.pdfで終わるファイル)、

mv -- **/*.pdf pdfs/

します。

zshの場合、再帰的なglobはデフォルトで有効になっており、bashの場合はまず次のようにして**有効にする必要があります。shopt -s globstar

あなたの find 呼び出しが実際に少し複雑になる可能性があると思います。ただし、特にzshを使用している場合、シェルの拡張ワイルドカード機能は非常に強力で、毎回動作する正しいMagic Findパラメータを覚えている手間を省きます。

おすすめ記事