すべてのサブフォルダで、ファイル名にドットが含まれるファイルを再帰的に検索し、ドットを削除しようとしています(最後のドットを除く)
名前変更コマンドは単独でも機能し、検索コマンドも単独でも機能しますが、これらは連携して機能しません。
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' {} \;