ファイルとディレクトリの名前を変更したいと思います。すべてä
をに変換しようとしていますが、に変換したa
としましょうJärjestelmä/Säätimet
。だから私はそう言いますfind -exec rename 's/ä/a/g'
。今はもう見つからないと文句を言うようにfind
変換されます。Järjestelmä
Jarjestelma
Järjestelmä
exec
この問題は、コマンドを実行する順序を変更することで解決されます。可能ですか?そうでなければ、正しいアプローチは何ですか?
もはや何も変更されなくなるまでコマンドを再実行できるので、それは大きな問題ではありません。とにかく、これは私を迷惑にさせます。
答え1
マニュアルページのオプションを使用してくださいfind
。-depth
-depth Process each directory's contents before the directory itself.
The -delete action also implies -depth.
これはSäätimet
以前に処理され、名前を変更しただけでダウンできないと文句を言いませんJärjestelmä
。Järjestelmä
フルパスの処理を避けるために、rename
BSDやGNUなどの-execdir
一部の実装で使用しますfind
(ディレクトリを変更し、最後の部分のみをコマンド引数に渡します{}
(./
一部の実装ではプレフィックスを使用)。
mkdir Järjestelmä
touch Järjestelmä/Säätimet
find . -depth -execdir rename 's/ä/a/g' {} \;
find .
以下を提供します。
./Jarjestelma
./Jarjestelma/Saatimet