1GB 未満のすべてのディレクトリを移動しようとしています。このコマンドを使用しようとしています:
du -h -d 1 -t -1G | xargs -0 mv -it /destination/dir/
しかし、エラーメッセージが表示されます:
mv: cannot stat [...] File name too long
助けていただければ幸いです:)
したがって、ここに私のニーズを満たす回避策があります。おそらく誰かがそれを拡張できますか?とにかく、サブディレクトリについて心配する必要がない場合は、次のように動作します。
du -Sb -t -1G | cut -f 2- | xargs -d "\n" mv -t /path/to/destination/
これは、ファイル名がスペースではなくヌルバイトで区切られていることを指定しているため、-0
引数を使用している理由がわかりません。xargs
の出力にdu
は null バイトが含まれないため、出力全体が単一のファイル名として扱われ、表示されているエラーが発生します。
とにかく、次を使用することをお勧めしfind
ます:
find /path/to/source -type d -size -1024M -exec mv -it /path/to/destination {} +
必要なdu
出力が既に生成されており、代わりにそれを使用したい場合は、-0
スイッチを追加してヌル バイト セパレータを使用すると、現在のxargs
コマンドが機能するはずです。