我想使用 Shell 脚本按日期对所有文件进行排序。
例如,在 /Users/KanZ/Desktop/Project/Test/
中有文件 M1.h
, A2.h
和 F4.h
。
每个文件都有不同的时间。如何按日期和时间对所有这些文件进行排序,从最旧到最新?
目前我有一个重命名脚本:
cd /Users/KanZ/Desktop/Project/Test/
n=1
for file in *.jpg;
do
echo $file prefix=M file_name=M$n.jpg
echo $file_name n=$(( $n+1 ))
mv $file $file_name
done
我第一次运行脚本时,JPG 文件将是 M1.jpg
、M2.jpg
和 M3.jpg
但如果我添加一个名为 A1.jpg
的新文件到此目录并再次运行脚本,M1.jpg
、M2.jpg
和 M3。 jpg
将替换为 M4.jpg
(在运行脚本之前,此文件名为 A1.jpg
),因为第一个字母是 A
并出现在 M
之前。
我想得到M1
、M2
、M3
和M4.jpg
。
最佳答案
ls
命令可以轻松地按最后修改时间排序:
$ ls -1t /Users/KanZ/Desktop/Project/Test
要反转排序,请包含 -r
选项:
$ ls -1tr /Users/KanZ/Desktop/Project/Test
包含 1
告诉 ls
每行输出一个文件,没有额外的元数据(如长度、修改时间等),这通常是您在如果您需要将列表发送给其他命令以进行进一步处理,则执行 shell 脚本。
关于linux - 如何使用 shell 脚本按名称对文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14001797/