重命名文件夹中的多个文件的Linux命令错误

时间:2019-06-28 14:00:29

标签: linux

我正在使用此命令和sample_numbers_names.csv文件重命名该文件夹中的多个文件,该文件夹的子文件夹具有不同的文件名。

while IFS=, read -a p ; do SAMPLENUM=${p[0]} ; find . -type f -name "${SAMPLENUM}*" -exec rename -v "${SAMPLENUM}" "${p[1]}_${SAMPLENUM}" {} \; ; done < sample_numbers_names.csv

csv文件有两列,第一列代表旧名称,第二列代表新名称。例如

111,abc
222,xyz

使用此命令后,我得到的输出就是这样

111.txt转换为abc._111.txt

如何在abc后删除该dot,以便重命名的文件看起来像abc_111.txt而不是abc._111.txt

1 个答案:

答案 0 :(得分:0)

以下似乎可以按需工作:

$ cat sample_numbers_names.csv 
111,abc
222,xyz
$ mkdir -p foo/bar
$ touch foo/bar/{111,222}.txt
$ while IFS=, read old new ; do find . -type f | xargs rename "s/${old}/${new}_${old}/"; done < sample_numbers_names.csv
$ ls foo/bar/
abc_111.txt  xyz_222.txt