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
同様に、そのようなファイルが存在しない状況を解決するために組み合わせる必要があるかもしれません。
答え2
私はあなたが次のことを始めることができると思います:
> find PATH -name "*.py"
ここで探したいフォルダにPATH
変更できます。mv
xargs