将目录结构从/ YEAR / MONTH / DAY /更改为/ YEAR-MONTH-DAY
我需要将我的照片的目录结构从/ YEAR / MONTH / DAY /更改为/ YEAR-MONTH-DAY
我知道这可以用exiftool
完成,但它只适用于包含EXIF标签的文件,并且我有与每个图像对应的xmp-sidecar文件,这些也需要出现。 因此,我会以某种方式重新编写脚本是最好的方法。
我坐下来试图学习RegEx, sed
,bash以及什么不是,并且给予足够的时间,我想我应该能够解决这个问题,但是现在我很匆忙,所以任何帮助都会受到赞赏。
//奥拉
Ubuntu中的重rename
实用程序可以重命名目录结构,但它不会自行清理。
rename 's#(.+)/(.+)/(.+)#$1-$2-$3#' */*/*/
如果你只是希望它在重命名任何内容之前告诉你它将要做什么,最后坚持下去,但这里有一个小测试工具,告诉你什么是可能的:
$ mkdir -p 2014/06/15 $ touch 2014/06/15/photo_{001..003}.jpg $ tree . └── 2014 └── 06 └── 15 ├── photo_001.jpg ├── photo_002.jpg └── photo_003.jpg $ rename 's#(.+)/(.+)/(.+)#$1-$2-$3#' */*/*/ $ tree . ├── 2014 │ └── 06 └── 2014-06-15 ├── photo_001.jpg ├── photo_002.jpg └── photo_003.jpg
简单地说它正在被提供给第三级目录,并且重命名是读取前面的两个段并重命名它,将它粘贴在当前目录中。 正如您所看到的,会有一堆年份目录。 假设它们是空的,你可以用类似的东西清理(我祈祷你先检查它们是否为空):
find -maxdepth 1 -type d -regex '\./[0-9][0-9][0-9][0-9]' -exec rm -irf "{}" \;
我正在使用-i选项强制它在删除每个文件之前询问您。 删除它需要您自担风险。
cd base # the trailing slash in the pattern limits the results to directories, not files for subdir in */*/*/; do # $subdir is now "year/mon/day/" subdir=${subdir%/} # remove the trailing slash newdir=${subdir//\//-} # replace all slashes with hyphens mkdir "$newdir" mv "$subdir"/* "$newdir" done
试试这个:
TOP=$PWD for y in *; do if cd $y; then for m in *; do if cd $m; then for d in *; do if cd $d; then mv $d $TOP/$y-$m-$d -R fi done cd .. && rmdir $m fi done cd .. && rmdir $y fi done
$ fn =“/ media / drive / folder / 2014/06/14 / name.jpg”; \ echo“mv $ fn $(echo $ fn | sed -re's,([0-9] +)/,\ 1-,g')” mv /media/drive/folder/2014/06/14/name.jpg /media/drive/folder/2014-06-14-name.jpg
$ find -type f | T恤LISTOFFILES.txt $ cat LISTOFFILES.txt | 而读p; #循环遍历所有文件,一次一个 f =“$ {p ## * /}”; bn = $ {f %% \。*}; op =“$ {p%/ *} /”; echo -e“$ f \ n $ bn \ n $ op” #$ p - 原始文件的完整路径 #$ f - 带扩展名的文件名 #$ bn - basename,不带扩展名的文件名 #$ op - orignal PATH,文件名和扩展名被剥离 #在此处添加您的转化 - 基于以上内容 #mkdir -p“$ p”#可能需要 #mv“$ p”“......”# DONE
现在,如果您完全阅读上述内容,您将找到完成此任务所需的所有零碎内容。
因为我不知道你是怎么做到的,也不知道你想要什么 – 我无法为你完成它。
http://www.tldp.org/guides.html
有两个Bash指南可以阅读和浏览 – 有一个去。
我要把它留在这里。 这不是服务,我只是因为好奇而做到了。
请记住 – 那里可能存在故障,因为我没有完全测试过。
你可能会介绍你没想到的错误… 🙂
祝好运! ;-) 你需要它。