命令行 将目录结构从/YEAR/MONTH/DAY/更改为/YEAR 月

分享于 

5分钟阅读

ubuntu

 

问题:

我需要更改/YEAR/MONTH/DAY/到/year-month-day照片的目录结构

我知道这可以能是用 exiftool 完成的,但它只能对包含,的文件工作,并且我有,文件。 所以我想某种方法是最好的方法。

我坐下来学习 正规表达式,sed,和什么不,我想我应该能够找到这个,但是现在我很忙。

//Ola


回答 1:

Ubuntu中的rename 实用工具可以重命名目录结构,但它本身不会清理。


rename 's#(.+)/(.+)/(.+)#$1-$2-$3#' */*/*/



如果只要在重命名任何内容之前告诉 -vn 将要做什么,可以在下面提供一些测试:


$ 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选项强制它在删除每个文件之前询问你。 at你自己的风险。


回答 2:


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




回答 3:

尝试这个:


 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




回答 4:






$ 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 | tee LISTOFFILES.txt


$ cat LISTOFFILES.txt | while read p ; do # loop through all files, one at a time


f="${p##*/}" ; bn=${f%%.*} ; op="${p%/*}/" ; 


echo -e"$fn$bnn$op"


# $p - complete path to original file


# $f - filename with extension


# $bn - basename, filename without extension


# $op - orignal PATH, filename and extensions stripped off



# add your conversion here - based on the 上面


# mkdir -p"$p" # probably required


# mv"$p""..." # 


done




如果你仔细阅读 上面,你会发现你需要完成这个任务的所有部分和部分。

因为我不能告诉你如何拥有它,你怎样想要它- 我不能为你完成它。

http://www.tldp.org/guides.html
有两个Bash指南来阅读和浏览- 有一个。

这是我的服务,因为我只是好奇而已,我把它放在了这里。
记住- 这里可能有错误,因为我没有完全测试过它。
你可能会引入你没有想到的错误。 :- )

Good - 你需要它。



COM  COMM  str  DIR  Comma  命令行  
相关文章