我有超过1000个看起来像这样的文件。
kkk1a2o_A.txt
kkk1a73_A.txt
kkk2chj_A.txt
我想更改每个文件的名称,如下所示
1a2o.txt
1a73.txt
2chj.txt
如何使用awk或sed执行此操作?
答案 0 :(得分:1)
sed
和awk
对文件内容进行操作,而不是对其名称进行操作。您可以在循环中使用mv
:
for file in kkk*.txt ; do
new=${file#kkk}
mv "${file}" "${new%_A.txt}.txt"
done
答案 1 :(得分:0)
无需sed
或awk
,只需bash
参数扩展:
for f in *.txt
do
dest=${f#kkk}
dest=${dest%_A.txt}.txt
mv "$f" "$dest"
done
答案 2 :(得分:0)
这可能适合你(GNU sed):
printf "%s\n" * | sed 'h;s/kkk\([^_]*\)_A/\1/;H;g;s/^\(.*\)\n/mv -v \1 /e'