特定の拡張子を持つすべてのファイルにサフィックスを追加します。

特定の拡張子を持つすべてのファイルにサフィックスを追加します。

suffix / extensionを持つすべてのファイルを検索するコマンドを作成します.py。見つかった各ファイルに対して、コマンドは.backupファイルにサフィックス/拡張子を追加する必要があります。したがって、ファイル名がある場合、one.py新しい名前はになりますone.py.backup

頑張った

find . / -name "*.py" -type f -exec mv {} {}.backup \;

しかし、うまくいきません

ベストアンサー1

これは非常に簡単なので、シェルベースのソリューションも機能します(ファイル名に文字列を追加するだけです)。

for file in *.py; do newname="$file.backup"; mv "$file" "$newname"; done

そのようなファイルが存在しない可能性がある場合は、状況を明示的にキャプチャする必要があります。前提として、bash次のオプションがありますnullglob

shopt -s nullglob; for file in *.py; do newname="$file.backup"; mv "$file" "$newname"; done

または、ファイルが存在するかどうかを明示的にテストします。

for file in *.py; do newname="$file.backup"; [ -f "$file" ] && mv "$file" "$newname"; done

問題のファイルがサブディレクトリにも存在する場合、状況はより複雑になります。 v4以降、bash次のglobstarオプションが利用可能です。

shopt -s globstar; for file in **/*.py; do newname="$file.backup"; mv "$file" "$newname"; done

shopt -s nullglob同様に、そのようなファイルが存在しない状況を解決するために組み合わせる必要があるかもしれません。

おすすめ記事