私のディレクトリには、「20130101_temp.txt」、「20130102_temp.txt」などの名前のファイルがたくさんあります。
これらすべてのファイルの名前から「_temp」を削除するにはどうすればよいですか。つまり、20130101_temp.txt の名前を 20130101.txt に変更します。
私のディレクトリには、「20130101_temp.txt」、「20130102_temp.txt」などの名前のファイルがたくさんあります。
これらすべてのファイルの名前から「_temp」を削除するにはどうすればよいですか。つまり、20130101_temp.txt の名前を 20130101.txt に変更します。
バッシュの使用:
for x in *_temp.txt
do
mv $x ${x%%_temp.txt}.txt
done
rename
正規表現を取るPerl (少なくとも Ubuntu では) に付属するユーティリティもあるので、次のようにして同じことを実現できます。
rename -n 's/_temp\.txt$/.txt/' *_temp.txt
この-n
オプションは、名前が変更される内容のみを表示する「予行演習」を開始します。実際に名前変更を実行するには、それを削除します。
for
グロブで -loop を使用してファイルを検索し、パラメーター置換_temp
を使用して移動用を削除します。
for t in ????????_temp.txt; do
echo mv ${t} ${t/_temp/}
done
システムで出力が正しく表示されることをテストしたら、 を削除echo
します。
次のようなことを試してください:
for FILENAME in *_temp.txt; do
mv $FILENAME `echo $FILENAME | sed -e 's/_temp//'`
done
通常は、最初に を にmv
置き換えて試してみることをお勧めしecho
ます。
これは bash ソリューションではありませんが、合理的な bash ソリューションについて考えるのが面倒である一方で、名前変更タスクに頻繁に遭遇するため、そのようなことを非常にうまく行う GUI ツールである pyRenamer を入手しました。通常、標準リポジトリからインストールできます。
ただし、dlundquists ソリューションは非常にうまく機能します。