2

私のディレクトリには、「20130101_temp.txt」、「20130102_temp.txt」などの名前のファイルがたくさんあります。

これらすべてのファイルの名前から「_temp」を削除するにはどうすればよいですか。つまり、20130101_temp.txt の名前を 20130101.txt に変更します。

4

5 に答える 5

7

バッシュの使用:

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オプションは、名前が変更される内容のみを表示する「予行演習」を開始します。実際に名前変更を実行するには、それを削除します。

于 2013-01-17T00:44:03.557 に答える
3

forグロブで -loop を使用してファイルを検索し、パラメーター置換_tempを使用して移動用を削除します。

for t in ????????_temp.txt; do 
    echo mv ${t} ${t/_temp/}
done

システムで出力が正しく表示されることをテストしたら、 を削除echoします。

于 2013-01-17T00:44:30.423 に答える
1

次のようなことを試してください:

for FILENAME in *_temp.txt; do
    mv $FILENAME `echo $FILENAME | sed -e 's/_temp//'`
done

通常は、最初に を にmv置き換えて試してみることをお勧めしechoます。

于 2013-01-17T00:43:41.017 に答える
0

これは bash ソリューションではありませんが、合理的な bash ソリューションについて考えるのが面倒である一方で、名前変更タスクに頻繁に遭遇するため、そのようなことを非常にうまく行う GUI ツールである pyRenamer を入手しました。通常、標準リポジトリからインストールできます。

ただし、dlundquists ソリューションは非常にうまく機能します。

于 2013-01-17T00:54:27.690 に答える