我有数千个文件需要重命名。 它们的形式为xxxxx_文件名.doc
xxxx 是字母数字,但 在所有情况下,如果可能,需要删除直到并包括第一个下划线的前缀。某些文件最终会出现重复的名称,因此重要的是任何重复项都不会覆盖现有文件(应忽略它们)。
如果没有下划线,则应跳过。
examples:
3445sh0_may_receipts.doc
df784hb68_sample.file-name.doc
b6890zs22_sample file name.doc
b6890zs22_sample_name.doc
gh7856n77.doc
56n57swd0.doc
etc ...
我对awk的使用并不熟练,但似乎awk可能会使用下划线作为分隔符,并忽略第一列到第一个下划线。我不知道如果发现重复文件 awk 会做什么。
假设您有这些文件:
$ ls -1
3445sh0_may_receipts.doc
b6890zs22_sample file name.doc
b6890zs22_sample_name.doc
df784hb68_sample.file-name.doc
gh7856n77.doc
您可以:
_
的文件;xxxx_
;所以:
for fn in *_*; do
mv "$fn" "${fn#*_}"
done
结果:
$ ls -1
gh7856n77.doc
may_receipts.doc
sample file name.doc
sample.file-name.doc
sample_name.doc