基于查找,保留文件夹结构,批量重命名名称中带有空格的文件

时间:2017-06-21 17:18:23

标签: python-3.x

我在文件夹结构中有12000个PDF文件和一个查找csv文件来重命名它们,保留结构。我找到了

Bulk renaming of files based on lookup

但是没有处理名称中的空格,我没有找到任何能够通过整个文件夹树结构并根据查找表重命名文件同时保留文件夹结构。

有什么想法吗? 感谢

1 个答案:

答案 0 :(得分:0)

如果文件名中包含空格,则应在文件名前后使用双引号或将其内的空格转义。

对于您想做的事情,您可以重复使用以下zsh脚本。

它将要处理的目录作为参数。首先尝试一些小的目录。为避免做错事,我建立了一个对话框并促进了反向重命名。

使用zsh的全局功能选择要重命名的文件。您需要对此进行调整以适应您的情况。我制作了一个文件列表数组(带括号),所以我不必担心文件分隔符。

您应该修改fromto变量,或更普遍地修改sed替换规则。您可以将csv文件转换为sed脚本。

#!/usr/bin/env zsh

from=RIB;to=IBAN
## reverse
#from=IBAN;to=RIB

filelist=($1/**/$from*.(pdf|jpg|jpeg|PDF|JPG|JPEG))

zip(){
    for file in $filelist
    do
    $1 "$file" "`echo $file|sed -E "s/(.*)$from(.*)/\1$to\2/"`"
    done}

# dry run
zip echo

read -q -s $'REPLY?Do you want to rename as above ?\n'
[[ $REPLY != y ]] && {echo "Not renaming and exiting.";exit}

echo "Renaming..."
zip mv
echo "Renamed."