替换不同文件夹中的不同文件

替换不同文件夹中的不同文件

他大家,

我找不到问题的答案,所以这里是:

我想做一项“工作”,将 10000 多个 PDF 文件从 1 个目录替换/分发到一个唯一的文件夹,其中已经存在“相同”的 PDF(仅 PDF 名称相同)。

示例:包含 10000+ PDF 文件的目录 = /my_dir/backup 有 10000+ 随机 PDF,例如143079.pdf493857.pdf888675.pdf

“作业”必须搜索143079.pdf已经存在的文件夹,例如:它所在的文件夹/os_dir/pdf/EDFR_29384_euendho并替换它。因此,“作业”将看到/my_dir/backup/143079.pdf并开始在文件夹中搜索/os_dir/pdf/,并在 中找到它/os_dir/pdf/EDFR_29384_euendho/。他必须将143079.pdfin替换/os_dir/pdf/EDFR_29384_euendho/143079.pdffrom /my_dir/backup/。他必须对所有随机 PDF 和所有随机文件夹执行此操作 10000 多次。

做这个的最好方式是什么?

答案1

find+bash解决方案:

find . -type f -name "*.pdf" -exec bash -c \
'p="/my_dir/backup/"; bn=${1##*/}; 
 [[ "$1" != $p* ]] && [[ -f "${p}$bn" ]] && cp "${p}$bn" "$1"' _ {} \;

  • p="/my_dir/backup/"- 初始(关键)目录的路径
  • bn=${1##*/}- 文件的基本名称

相关内容