从osx命令行排序和重命名文件的最佳方法

时间:2015-03-04 16:34:41

标签: macos command-line

我有一个文件列表,我希望按日期排序,然后将它们重命名为file1,file2,filen,其中file1是最旧的,filen是最新添加的。

有点像将ls的排序输出管道输出到mv,但我想知道最佳实践是什么。

1 个答案:

答案 0 :(得分:0)

它看起来像这样,但我会在你自己的目录中的文件的COPY上测试它。如果/当它起作用时,删除倒数第三行中的单词echo,因为目前它只显示它会做什么,而不做任何事情:

#!/bin/bash
i=1
while IFS=$'\n' read f; do
   # Get file creation date through mdls
   creation=$(mdls -raw -name kMDItemFSCreationDate "$f")

   # Convert that to seconds for sorting
   epoch=$(date -j -f '%Y-%m-%d %H:%M:%S %z' "$creation" +%s)

   # And send on to "sort" along with the filename
   echo $epoch:$f
done < filelist.txt | sort | while IFS=":" read d f; do
   echo mv "$f" file$i
   ((i++))
done

它假定您的文件列表存储在名为filelist.txt

的文件中