假设bash
shell,并假定您想要为每个子目录重新启动文件编号,并将所有文件移动到顶层目录(留下空子目录)。格式化为脚本以方便您阅读:
find . -type f -print0 | while IFS= read -r -d '' file
do
myfile=$(echo $file | sed "[email protected]/@@")
mydir=$(dirname "$myfile")
if [[ $mydir != $lastdir ]]
then
NR=1
fi
lastdir=${mydir}
mv "$myfile" "$(dirname "$myfile")_part${NR}"
((NR++))
done
或者作为一个行命令:
find . -type f -print0 | while IFS= read -r -d '' file; do myfile=$(echo $file | sed "[email protected]/@@"); mydir=$(dirname "$myfile"); if [[ $mydir != $lastdir ]]; then NR=1; fi; lastdir=${mydir}; mv "$myfile" "$(dirname "$myfile")_part${NR}"; ((NR++)); done
当心。这是武装,并将执行批量重命名/移动您当前工作目录中或以下的每个文件。使用风险自负。
要删除空子目录:
find . -depth -empty -type d -delete
什么是文件的原始名字? 'part1'和'part2',有没有机会,还是你要枚举它们? – DevSolar
你是否需要子文件夹中的重命名文件,或所有顶层目录? – DevSolar
样品一样的文件: FineHowardMD_1490040273_tab17.pdf HowardFineMD_1463582881_tab17.pdf 我需要的父目录名和“_partN”更改文件名 例子: new_folder_for_upload_part1.pdf new_folder_for_upload_part2.pdf 最后完成后,这工作,我需要将所有目录中的所有文件存储到顶层目录中。 –