フォルダ内のすべてのファイルを小文字から大文字に変換/「翻訳」したいと思います。for
ループを使用してこれを行うことができます。
for i in ./* ; do mv $i $(echo $i | tr "a-z" "A-Z") ; done
for i in `find . -maxdepth 1 -mindepth 1` ; do mv $i $(echo $i | tr "a-z" "A-Z") ; done
tr
しかし、次の範囲ではなぜ機能しないのか知りたいですfind
。
find . -maxdepth 1 -type f -exec mv {} $(echo {} | tr "a-z" "A-Z") \;
ファイル名を再印刷して大文字に変更します。find
バージョンが機能しないのはなぜですか?
私の目標はループでfind
はなく使用することですfor
。
答え1
代わりに使用してくださいrename
:
find . -maxdepth 1 -type f -exec rename 'y/a-z/A-Z/' {} +
{}
サブシェルでは拡張されません。