GNU/Linux >> Linux の 問題 >  >> Linux

Bash でファイル拡張子を再帰的に変更する

Debian 14 の新規インストールでは、提案された解決策はどれも機能しませんでした。これは、どの Posix/MacOS でも機能するはずです。

find ./ -depth -name "*.t1" -exec sh -c 'mv "$1" "${1%.t1}.t2"' _ {} \;

すべてのクレジット:https://askubuntu.com/questions/35922/how-do-i-change-extension-of-multiple-files-recurively-from-the-command-line


bash のバージョンの場合 globstar をサポート オプション (バージョン 4 以降):

shopt -s globstar
for f in **/*.t1; do
    mv "$f" "${f%.t1}.t2"
done 

用途:

find . -name "*.t1" -exec bash -c 'mv "$1" "${1%.t1}".t2' - '{}' +

rename ある場合 利用可能な場合は1つを使用してください これらのうち:

find . -name '*.t1' -exec rename .t1 .t2 {} +
find . -name "*.t1" -exec rename 's/\.t1$/.t2/' '{}' +

私は bash でこのようにします:

for i in $(ls *.t1); 
do
    mv "$i" "${i%.t1}.t2" 
done

編集:私の間違い:再帰的ではありません。ファイル名を再帰的に変更する方法は次のとおりです:

for i in $(find `pwd` -name "*.t1"); 
do 
    mv "$i" "${i%.t1}.t2"
done

Linux
  1. バッシュ‘?

  2. Bash:Find Into Selectの空白に安全な手続き上の使用?

  3. Firefoxのログファイルを見つけますか?

  1. Bash を使用してファイルを検索してコピーする

  2. アクセス許可を特定のファイル パターン/拡張子に変更するには?

  3. パターンに一致する最新のファイルを見つけるための Bash 関数

  1. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  2. 最大のファイルを再帰的に検索しますか?

  3. Linuxは、指定された文字列のファイル名を再帰的に検索します