6

find ./dir -type f -iname "*.t[argz]*[bz2]" -print | xargs mv --target-directory=dir 名前にスペースが含まれるファイルでは失敗するようです。それを改善する方法は?または代替?

以下の回答に感謝します: 私の mv は --null または -0 をサポートしていません。私は cygwin を使用しています:

$ mv --help
使用法: mv [OPTION]... [-T] SOURCE DEST
  または: mv [OPTION]... SOURCE... DIRECTORY
  または: mv [OPTION]... -t DIRECTORY SOURCE...
SOURCE の名前を DEST に変更するか、SOURCE を DIRECTORY に移動します。

必須引数 t
.

4

3 に答える 3

11

-print0コマンドの代わりに-print使用しfind、xargs -0(または--null) オプションを使用すると、改行やスペースではなく NUL が区切り文字として使用されます。

find ./dir -type f -iname "*.t[argz]*[bz2]" -print0 | xargs --null mv --target-directory=dir
于 2010-01-07T19:09:36.747 に答える
0

検索用の-execオプションを見ましたか?

find ./dir -type f -iname "*.t[argz][bz2]" -exec mv {} --target-directory=dir ';' 

-execオプションは、セミコロンが引用符で囲まれていることを確認するまで、コマンドとしてそれに続くすべてのオプションを実行します。このようにして、間隔の問題に対処する必要はありません。

于 2010-01-07T20:10:38.993 に答える
0

GNU 検索

find ./dir -type f -iname "*.t[argz]*[bz2]" -exec mv "{}" /destination +;
于 2010-01-08T00:40:12.920 に答える