特定のファイルを再帰的に検索し、ファイル名を変更しようとする

特定のファイルを再帰的に検索し、ファイル名を変更しようとする

すべてのサブフォルダで、ファイル名にドットが含まれるファイルを再帰的に検索し、ドットを削除しようとしています(最後のドットを除く)

名前変更コマンドは単独でも機能し、検索コマンドも単独でも機能しますが、これらは連携して機能しません。

find ./ -type f -execdir rename -n 's/\.(?=[^.]*\.)//g' *.txt \;

答え1

コマンド内の glob は-execdir機能しないので、find必要なファイルを検索して、renameそのファイルに対してのみ実行するようにした方がよいでしょう。

find ./ -type f -name "*.txt" -exec rename -n 's/\.(?=[^.]*\.)//g' {} \;

rename式がパスでは機能しないことが判明しました。代わりにこれを試してください:

find ./ -type f -name "*.txt" -exec rename -n 's:\.(?=[^./]*\.)::g' {} \;

関連情報