如何将子目录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
相关产品推荐
相关产品推荐

