我必须根据 Excel 列表重命名大量文件(是的,我知道)。
因此,我的方法是将文件名从 Excel 导出 filenames.csv
为以下格式:
this_is_a_file.ext ; new_filename_1.ext
this_is_another_file.ext ; new_filename_2.ext
this is a filename with spaces.ext ; new_filename_3.ext
对于重命名,我想使用类似这样的 bash 脚本:
lstrn() {
while IFS= read -r line; do
oldfilename=`echo $line | awk '{print $1}'`
newfilename=`echo $line | awk '{print $3}'`
mv $oldfilename $newfilename
done < $1
}
我会采用以下方法:
$ lstrn filenames.csv
只要新旧文件名中都没有空格,这种方法就可以正常工作。
据我了解,是$1
具有旧文件名的文本块,是$2
的;
,而是$3
我的每行中的新文件名filenames.csv
。
我想我明白为什么这不适用于文件名中的空格...我需要替换该awk '{print $1}'
部分,对吗?
我完全不知道如何让它与空格一起工作,如果有人知道如何做到这一点我将非常感激!