2016-06-21 14 views
1

だから私は、これらは、具体的.logファイルで、テキストファイル内のファイルの名前の負荷を入れている:今、私は.logファイルのリストを持っていることをテキストファイルbashでファイルの拡張子を削除

ls *.log > finished_data.txt 

、名前を保持するにはどうすればよいですか?.log拡張子を削除しますか? 私の思考プロセスはそれらの名前をすべて変更していますか?

+2

このpの右上にある[Q&A検索]ボックスに気付きましたか?年齢? – Jdamian

答えて

6
.logファイルを通じて

だけループし、それらを動かす:

for file in *.log 
do 
    mv "$file" "${file%.log}" 
done 

これはshell parameter expansionを使用しています。

端から .logを除去することにより、すべての .logファイルの名前を変更する renameを使用し
$ d="a.log.log" 
$ echo "${d%.log}" 
a.log 
+0

どうもありがとうございました。特定のファイルに最後に.logを追加するといいでしょうか? – user3667111

+1

@ user3667111 'mv" $ file "" $ {file} .log "'と言うだけです。 – fedorqui

+0

@gniourf_gniourfありがとう、私はいつも '%'と '%%'と混乱します。私は '%'が最も正確な最短一致を取り除くのを見ます。 'for'ループの構文について:違いはありますか? – fedorqui

1

rename 's/\.log$//' *.log 
    個の
  • \.log$一致するファイル名の末尾に.log、あなたがprenameを使用している場合は、その最初のドライ実行を行うことができます空白

で置き換えることによって、省略されている:

rename -n 's/\.log$//' *.log 

変更に満足する場合:

rename 's/\.log$//' *.log