根据文本文件重命名文件列表

根据文本文件重命名文件列表

我的文件夹中有一个文件列表,我想根据文本文件对其进行重命名。例如:

这是文件夹中的 5 个文件。

101_T1.nii
107_T1.nii 
109_T1.nii
118_T1.nii
120_T1.nii

我想让它们使用包含相同顺序的新文件名列表的文本文件重命名,但不带扩展名.nii

n01
n02
n03
n04
n05

我可以怎样做呢?

答案1

一个衬垫,此命令读取“列表”txt 并解析文件的每一行。

for file in *.nii; do read line;  mv -v "${file}" "${line}";  done < list

答案2

你可以这样做:

paste OLD NEW|while read OLD NEW;do mv ${OLD} ${NEW};done

...其中名为“OLD”的文件包含旧文件名,名为“NEW”的文件具有新的匹配 (1:1) 名称。

答案3

如果您的 shell 支持进程替换,请尝试:

paste -d' ' <(ls *.nii) /path/to/textfile | xargs -n2 mv

或者你可以用 POSIXly 来做到这一点:

ls *.nii | paste -d' ' - /path/to/textfile | xargs -n2 mv

相关内容