我有超過1000個文件,看起來像這樣。如何使用awk或sed從文件名中刪除字符?
kkk1a2o_A.txt
kkk1a73_A.txt
kkk2chj_A.txt
我想改變每個文件的名稱如下
1a2o.txt
1a73.txt
2chj.txt
我怎樣才能做到這一點使用awk或sed的?
我有超過1000個文件,看起來像這樣。如何使用awk或sed從文件名中刪除字符?
kkk1a2o_A.txt
kkk1a73_A.txt
kkk2chj_A.txt
我想改變每個文件的名稱如下
1a2o.txt
1a73.txt
2chj.txt
我怎樣才能做到這一點使用awk或sed的?
無需sed
或awk
,只是bash
參數擴展:
for f in *.txt
do
dest=${f#kkk}
dest=${dest%_A.txt}.txt
mv "$f" "$dest"
done
sed
和awk
對文件的內容進行操作,而不是對其名稱進行操作。你可以只用mv
在一個循環:
for file in kkk*.txt ; do
new=${file#kkk}
mv "${file}" "${new%_A.txt}.txt"
done
這可能會爲你工作(GNU SED):
printf "%s\n" * | sed 'h;s/kkk\([^_]*\)_A/\1/;H;g;s/^\(.*\)\n/mv -v \1 /e'