同じパーティションで何百万ものファイルを移動するための正しい構文を忘れました。

同じパーティションで何百万ものファイルを移動するための正しい構文を忘れました。

xargsを使用せずに100,000個のjpgを同じディスク/ボリューム/パーティションの正しいディレクトリに移動するコマンドラインガイドラインがあります。奇妙なことは、jpgにスペースと複数のピリオドまたはドットがあることです。例: 「奇妙なイメージ。45 xyz.001 00.78.jpg」。もう一つの珍しい点は、奇妙なパターンがコレクションを参照しているので、何千ものjpgがあり、最後のjpg拡張子の前に追加の数字セットが挿入されていることです。設計決定を誰が下したかはわかりませんが、とにかく私は次のようなものがあります。

for f in ./“wacky image.45 xyz.name.s.00.78”*; do
    mv $f /path/to/destination/;
done

私が何を見逃しているのかよくわかりません。

編集:MacOSターミナルアプリでは、動作はBSDにほぼ似ています。

答え1

for f in ./"wacky image.45 xyz.name.s.00.78"*; do
    mv "$f" /path/to/destination/;
done 

(引用符を参照)同じ問題がありました

mv ./"wacky image.45 xyz.name.s.00.78"* /path/to/destination/

すべてワイルドカードです。必要な数百万のファイルは次のとおりです。

find . -iname 'wacky image.45 xyz.name.s.00.78*'  -exec mv "{}"  /path/to/destination/

またはファイルごとのロジックが必要な場合

while read -r F ; do
    mv "$F"  /path/to/destination/
done < <(find . -iname 'wacky image.45 xyz.name.s.00.78*' )

答え2

Arkadiusz Drabczykは上記の「Put $f in double quote: "$f"」で正確です。

この機能により、100万以上のファイルを同じディスク/ボリューム/パーティションの別のディレクトリに移動できます。質問を編集しましたが、ここでも入力します。私はMacOS 10.14を使用しており、ターミナルアプリはほとんどBSDのように動作します。良いか悪いかは、Appleはオペレーティングシステムで32ビットアプリケーションの実行を許可しないため、すべてのCLIツールは64ビットにコンパイルされます。たぶんこれが大きなパラメータリストを受け入れる理由ですか?

関連情報