You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将子目录PDF文件复制到目标目录并附加父目录名重命名?

解决Linux下PDF文件批量复制并重命名的问题

别担心,刚接触Linux命令的新手有疑问太正常啦,我给你两种简单的方法,你可以选适合自己的来操作~

第一步:先确保目标目录存在

首先咱们得先确认~/a/c这个目录已经创建好了,如果还没有,打开终端输入下面的命令创建它:

mkdir -p ~/a/c

-p参数的作用是:如果~/a目录不存在的话也会一起创建,避免报错。


方法一:逐个手动复制(新手友好,不容易出错)

这种方法虽然需要输入4条命令,但每一步都很清晰,适合刚开始熟悉命令的你:

  • 复制~/a/a1/1.pdf到~/a/c并改名为a1_1.pdf:
    cp ~/a/a1/1.pdf ~/a/c/a1_1.pdf
    
  • 复制~/a/a1/2.pdf到~/a/c并改名为a1_2.pdf:
    cp ~/a/a1/2.pdf ~/a/c/a1_2.pdf
    
  • 复制~/a/b1/1.pdf到~/a/c并改名为b1_1.pdf:
    cp ~/a/b1/1.pdf ~/a/c/b1_1.pdf
    
  • 复制~/a/b1/2.pdf到~/a/c并改名为b1_2.pdf:
    cp ~/a/b1/2.pdf ~/a/c/b1_2.pdf
    

简单解释下cp命令:它的格式是cp 源文件路径 目标文件路径,这里我们直接在目标路径里写了新的文件名,就顺便完成了重命名操作。


方法二:批量命令(一次搞定,适合以后重复操作)

如果以后你还有类似的批量文件处理需求,可以用这个循环命令,一次性完成所有复制和重命名:

for file in ~/a/*/*.pdf; do
    # 提取父目录的名字(比如a1、b1)
    dir_name=$(basename $(dirname "$file"))
    # 提取原文件的名字(比如1.pdf、2.pdf)
    base_name=$(basename "$file")
    # 拼接成新的文件名,比如a1_1.pdf
    new_name="${dir_name}_${base_name}"
    # 复制文件到目标目录并使用新名字
    cp "$file" ~/a/c/"$new_name"
done

把这段命令直接粘贴到终端里执行就行,它会自动遍历~/a下所有子目录里的PDF文件,按照「目录名_原文件名」的格式重命名后复制到~/a/c。


验证结果

操作完成后,你可以输入下面的命令查看~/a/c目录里的文件,确认是不是你想要的:

ls ~/a/c

正常情况下会显示:a1_1.pdf a1_2.pdf b1_1.pdf b1_2.pdf

内容的提问来源于stack exchange,提问作者Sandy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:25:40