Macのすべてのファイルに誤って.dcm
拡張子を追加したため、iCloudとキーチェーンのストレージにログインできませんでした。
元のファイル拡張子を復元するための解決策を見つけるのに必死でしたが、.abc
を.def
拡張子に置き換える答えしか見つかりませんでした。これは私が望んでいないことです。すべてのファイルに追加された冗長な.dcm
拡張子をすべて削除したいと思います。
すべてのファイルの.dcm拡張子を(再帰的に)削除する方法はありますか?
これらは私が見つけたファイル拡張子を置き換えるための解決策です:
for file in *.abc; do mv "$file" "${file%.abc}"; done
for old in *.abc; do mv $old basename $old .abc.ef; done
それらは再帰的ではないか、Bash(3.2x)が「不正な置換」/「コマンドが見つかりません」と言っています。
これはそれを行う必要があります:
find / -type f -name '*.dcm' -exec sh -c 'mv -- "$0" "${0%.dcm}"' {} \;
コマンド:
/
から再帰*.dcm
という名前のすべてのファイルを検索します{}
)という1つの引数を使用して小さなサブシェル呼び出しを実行しますmv
を使用してファイル($0
)の名前を変更します%
の最短一致(.dcm
) を削除echo
の前にmv
を置いて、それが何をするかを確認します。
サブシェルなしで作業したい場合は、while
にパイプできます。
find / -type f -name '*.dcm' -print0 | while IFS= read -r -d '' filename; do
mv -- "$filename" "${filename%.dcm}"
done