私はこのように見える1000以上のファイルを持っています。
kkk1a2o_A.txt
kkk1a73_A.txt
kkk2chj_A.txt
各ファイルの名前を次のように変更したいのですが
1a2o.txt
1a73.txt
2chj.txt
どうすればawkまたはsedでこれを行うことができますか?
sed
awk
ファイルの名前ではなく、ファイルの内容を操作します。mv
ループで使用できます:
for file in kkk*.txt ; do
new=${file#kkk}
mv "${file}" "${new%_A.txt}.txt"
done
sed
orは必要ありません。パラメータ展開awk
だけです:bash
for f in *.txt
do
dest=${f#kkk}
dest=${dest%_A.txt}.txt
mv "$f" "$dest"
done
これはうまくいくかもしれません(GNU sed):
printf "%s\n" * | sed 'h;s/kkk\([^_]*\)_A/\1/;H;g;s/^\(.*\)\n/mv -v \1 /e'