0

1GB 未満のすべてのディレクトリを移動しようとしています。このコマンドを使用しようとしています:

du -h -d 1 -t -1G | xargs -0 mv -it /destination/dir/

しかし、エラーメッセージが表示されます:

mv: cannot stat [...] File name too long

助けていただければ幸いです:)

4

2 に答える 2

0

したがって、ここに私のニーズを満たす回避策があります。おそらく誰かがそれを拡張できますか?とにかく、サブディレクトリについて心配する必要がない場合は、次のように動作します。

du -Sb -t -1G | cut -f 2- | xargs -d "\n" mv -t /path/to/destination/
于 2016-04-04T16:21:29.670 に答える
0

これは、ファイル名がスペースではなくヌルバイトで区切られていることを指定しているため、-0引数を使用している理由がわかりません。xargsの出力にduは null バイトが含まれないため、出力全体が単一のファイル名として扱われ、表示されているエラーが発生します。

とにかく、次を使用することをお勧めしfindます:

find /path/to/source -type d -size -1024M -exec mv -it /path/to/destination {} +

必要なdu出力が既に生成されており、代わりにそれを使用したい場合は、-0スイッチを追加してヌル バイト セパレータを使用すると、現在のxargsコマンドが機能するはずです。

于 2016-04-03T15:23:13.533 に答える