フォルダー内のすべての.txt
ファイルの名前を変更したい。この名前変更は、私のためにすべての.txt
の名前を変更します:
rename 's/\.txt//g' *.txt -v
しかし、すべてのサブフォルダの名前を変更したいときは
find ./ -type d -execdir rename 's/\.txt//g' *.txt -v ";"
それは私を示しています:
Can't rename *.txt *: No such file or directory
Can't rename *.txt *: No such file or directory
...
また、find ./ -type -d
は、現在およびすべてのサブフォルダーを正しく表示します。
No such file or directory
メッセージがあるのはなぜですか?
find
の-exec
構文を正しく使用し、'{}'
を使用して、見つかったファイルを表す必要があります。
find ./ -type d -name '*.txt' -execdir rename -n 's/\.txt//g' '{}' \;
テストしたら、rename
の後に-n
を削除します。
(通常のファイル名ではなくディレクトリ名を本当に変更したい場合-その場合、-type f
の代わりにtype -d
を使用します)