次のような名前の約250個のファイルがあります。
no_responseEvent_2002.02.07.03.15.56.970/
no_responseEvent_2002.02.10.01.47.07.450/
no_responseEvent_2002.02.13.14.18.46.00/
すべてのファイル名から「no_response」を削除したいと思います。
どうすればいいですか?
forループが機能できることを知っていますが、実装方法は混乱しています。
答え1
私は250個のファイルがすべて同じディレクトリにあり、同じ命名パターンに従うと仮定します。もしそうなら、これを行うことができます。
for i in "$remove"*;do mv "$i" "${i#"$remove"}";done
テスト
ls
no_responseEvent_2002.02.07.03.15.56.970
no_responseEvent_2002.02.07.03.15.56.972
no_responseEvent_2002.02.07.03.15.56.971
no_responseEvent_2002.02.07.03.15.56.973
for
ループを実行した後に得られる結果は次のとおりです。
remove=no_response
for i in "$remove"*;do mv "$i" "${i#"$remove"}";done
ls
Event_2002.02.07.03.15.56.970
Event_2002.02.07.03.15.56.971
Event_2002.02.07.03.15.56.972
Event_2002.02.07.03.15.56.973
引用する
http://www.commandlinefu.com/commands/view/2519/uniformly-Correct-filenames-in-a-directory