遍历目录以查找特定文件和文件夹集的脚本



我正在尝试创建一个脚本,该脚本将遍历rootDir的所有文件夹和子文件夹,以查找特定的文件夹和文件集。如果脚本将找到文件夹(例如testfolder1(,其中有:

  • textfile.txt
  • image.jpg
  • (可选(subtitles.dxfp
  • 包含video.mp4文件的另一个文件夹(例如testsubfolder1(
  • (可选(包含video_trailer.mp4文件的另一个文件夹(例如testsubfolder2(

它将创建包含textfile.txtimage.jpgsubtitles.dxfp(如果已找到(、video.mp4video_trailer.mp4(如果已发现(的存档,并将其保存在rootDir中。

目前,我有一个片段可以递归地遍历所有这些文件,但不包括video.mp4video_trailer.mp4在文件夹中。我应该如何修改我的代码才能达到想要的效果?我想它应该在开始时查看是否找到了textfile.txtimage.jpgsubtitles.dxfp,如果找到了,它会查看是否存在包含video.mp4文件的文件夹,但不是递归的,最后它会搜索另一个包含video_trailer.mp4文件的文件夹。我说得对吗?我不知道该如何正确地用代码编写它。提前感谢您的任何提示,让我更接近解决方案。

for dirpath, dirnames, filenames in os.walk(rootDir):
jpg = glob.glob(os.path.join(rootDir, dirpath, '*.jpg'))
mp4 = glob.glob(os.path.join(rootDir, dirpath, '*.mp4'))
txt = glob.glob(os.path.join(rootDir, dirpath, '*.txt'))
xml = glob.glob(os.path.join(rootDir, dirpath, '*.xml'))
dxfp = glob.glob(os.path.join(rootDir, dirpath, '*.dxfp'))
if jpg and mp4 and txt:
if xml and dxfp:
#Archive will have the same name as image
tarName  = [i for i in filenames if ".jpg" in i] 
tar = tarfile.open("{0}.tar".format(tarName[0].replace(".jpg","")), "w")
for file in [jpg, mp4, txt, xml, dxfp]:
tar.add(file[0])
tar.close()
else:
tarName  = [i for i in filenames if ".jpg" in i] 
tar = tarfile.open("{0}.tar".format(tarName[0].replace(".jpg","")), "w")
for file in [jpg, mp4, txt]:
tar.add(file[0])
tar.close()

使用find怎么样?

find / -type f -name "*.jpg" -exec tar -czf /tmp/jpg.tar.gz {} ;

使用-u,您可以更新现有的档案。

问候,fuchs

相关内容

  • 没有找到相关文章

最新更新