再帰的に名前を変更するには、次のコマンドを使用します:
find -iname \*.* | rename -v "s/ /-/g"
find
を使用できます 一致するすべてのファイルを再帰的に見つけるには:
$ find . -iname "*dbg*" -exec rename _dbg.txt .txt '{}' \;
編集: 何 '{}'
と \;
-exec
引数は find を実行します rename
見つかったすべての一致するファイルに対して。 '{}'
ファイルのパス名に置き換えられます。最後のトークン、\;
exec 式の終わりをマークするためだけにあるのですか?
すべてのことは、find のマニュアル ページにうまく説明されています:
-exec utility [argument ...] ;
True if the program named utility returns a zero value as its
exit status. Optional arguments may be passed to the utility.
The expression must be terminated by a semicolon (``;''). If you
invoke find from a shell you may need to quote the semicolon if
the shell would otherwise treat it as a control operator. If the
string ``{}'' appears anywhere in the utility name or the argu-
ments it is replaced by the pathname of the current file.
Utility will be executed from the directory from which find was
executed. Utility and arguments are not subject to the further
expansion of shell patterns and constructs.