一部のファイルの拡張子が.htmlなどで、一部のファイルがそうでないファイルディレクトリがある場合は、そのファイルをすべて.txtなどに変更するにはどうすればよいですか?
答え1
私はこれがあなたにうまくいくと思います(おそらくsedを使用するよりエレガントなアプローチです)。
for file in *; do
base=`echo "${file%.*}"`
mv -- "${file}" "${base}.txt"
done
答え2
よりエレガントにする必要はありませんが、完全性のためのsed
解決策は次のとおりです。
for file in *; do
mv "$file" "$(echo "$file" | sed 's/^\(.*\)\.\?.*$/\1.txt/')"
done
sed ビットはファイル名の最後のドットの前のすべてをつかみ、ドットとそのあとのすべてを「.txt」に置き換えます。ファイル名にドットがない場合は、ファイル名全体に「.txt」が追加されます。
どの方法を使用しても、スペースなどのファイル名を処理するには、変数の周りの引用符が非常に重要です。
答え3
シェルでこれらすべての名前を変更するには:
for file in *; do
mv -- "${file}" "`basename -- "${file}"`.txt"
done
file
拡張を決定するには、タイプをテストするために、または他のチェックを使用する必要があるかもしれません。