我有我的目录:
Parent
Sub folder 1
xyz_Room.jpg
xyz_facade.jpg
abc_Room.jpg
Sub folder 2
xyz_Room.jpg
xyz_facade.jpg
abc_Room.jpg
Sub Folder 3
yolo_Room.jpg
Sub sub folder 1
xyz_Room.jpg
xyz_facade.jpg
abc_Room.jpg
没有。任何文件夹中的子文件夹都不是固定的,因此操作需要递归完成。
要做的是找到所有.jpg文件并将其父文件夹名称附加到它们。它现在应该看起来像
Parent
Sub folder 1
Sub folder 1xyz_Room.jpg
Sub folder 1xyz_facade.jpg
Sub folder 1abc_Room.jpg
Sub folder 2
Sub folder 2xyz_Room.jpg
Sub folder 2xyz_facade.jpg
Sub folder 2abc_Room.jpg
Sub Folder 3
Sub Folder 3yolo_Room.jpg
Sub sub folder 1
Sub sub folder 1xyz_Room.jpg
Sub sub folder 1xyz_facade.jpg
Sub sub folder 1abc_Room.jpg
有人可以指导我怎么做吗?这是在使用终端的ubuntu16.04 GPU机器上完成的。
答案 0 :(得分:1)
好的,我将在 Python 中提供解决方案。假设您在Parent
脚本的同一目录中有目录.py
。下面的一个!
目录结构与此相同,
rename_script.py
Parent
Sub folder 1
xyz_Room.jpg
xyz_facade.jpg
abc_Room.jpg
Sub folder 2
xyz_Room.jpg
xyz_facade.jpg
abc_Room.jpg
Sub Folder 3
yolo_Room.jpg
Sub sub folder 1
xyz_Room.jpg
xyz_facade.jpg
abc_Room.jpg
此代码应该有效。 (在Linux中)
<强> rename_script.py:强>
import os
for folder in os.listdir("./Parent"):
s=os.listdir("./Parent/"+folder)
for file in s:
os.rename("./Parent/"+folder+"/"+file,"./Parent/"+folder+"/"+folder+file)
现在,
os.listdir("./Parent")
这会将父级内的所有子文件夹列为list
。所以对于每个文件夹
s=os.listdir("./Parent/"+folder)
上面会从这些子文件夹中获取文件并将它们存储在一个列表中,一个subfolder
的输出将是,
['xyz_Room.jpg', 'abc_Room.jpg', 'xyz_facade.jpg']
最后,对于每个文件,使用os.rename(src,dest)
重命名。这样做也是一样,
os.rename("./Parent/"+folder+"/"+file,"./Parent/"+folder+"/"+folder+file)
注意:
folder+file
- &gt;Sub Folder 1xyz_Room.jpg
即我在那里创建一个新的字符串,它是子文件夹和文件名的concatenation
。
输出:
Sub folder 1abc_Room.jpg Sub folder 1xyz_facade.jpg Sub folder 1xyz_Room.jpg
对所有子文件夹也会这样做。希望我很清楚。
答案 1 :(得分:0)
试试这个
xargs mkdir < Sub folder 1
答案 2 :(得分:0)
使用find命令列出所有必需的文件。并使用for循环遍历所有文件
for file_name in `find . -name '*jpg' -type f`;
do
dir_name=`dirname ${file_name}`;
base_dir_name=`echo ${dir_name} | rev | cut -d '/' -f 1`;
base_name=`basename ${file_name}`;
mv ${file_name} ${dir_name}/${base_dir_name}${base_name}
done