すべてのディレクトリを1GB未満で移動しようとしています。私は、このコマンドを使用しようとしています:1G未満のディレクトリを移動する
du -h -d 1 -t -1G | xargs -0 mv -it /destination/dir/
をしかし、私はエラーメッセージが表示されます:
ヘルプをいただければ幸いですmv: cannot stat [...] File name too long
:)
すべてのディレクトリを1GB未満で移動しようとしています。私は、このコマンドを使用しようとしています:1G未満のディレクトリを移動する
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
の出力にはヌルバイトが含まれないため、出力全体が単一のファイル名として扱われ、表示されているエラーが発生します。
とにかく、私はfind
を使用することをお勧めします:あなたはdu
は、すでにあなたが望む、代わりにそれを使用したい出力を生成していることを満足している場合
find /path/to/source -type d -size -1024M -exec mv -it /path/to/destination {} +
、あなたは-0
スイッチを追加することができるのでnullバイト区切り文字を使用すると、現在のxargs
コマンドが機能するはずです。
xargsに '-L 1'を追加してみてください:du -h -d 1 -t -1G | xargs -0 -L 1 mv -it/destination/dir/' – saeedgnu
ありがとう:)' -L 1'だが、 'mv:can not stat 'du -h -dを生成しようとした。-t 1 - 1G \ n ':そのようなファイルやディレクトリはありません '-n1'でもエラーメッセージを表示しました' mv:無効なオプション - ' h'' – nimrag