如何使用stat -c'%n%Y'?按上次修改时间对文件进行排序(BASH)

时间:2018-03-10 18:34:29

标签: bash unix

我想使用#include<bits/stdc++.h> using namespace std; int main() { map<pair<string, long long int>, string> MAP; pair<string, long long int> P; MAP.insert(pair<pair<string, long long int>, string>(pair<string, long long int>("Apple", 45), "Manzana")); MAP.insert(pair<pair<string, long long int>, string>(pair<string, long long int>("Berry", 20), "Arandano")); P = make_pair("Berry", 20); //to find berry, 20 cout<<MAP[P]<<"\n"; return 0; } 对目录的文件进行排序,此命令为您提供与上次修改时间连接的文件的名称。问题是我不知道如何获取最后一个数字字符(最后修改时间)以便用管道对文件进行排序,我想这将是这样的stat -c %n%Y <directory_path>*,我已经阅读过stat并且对mannuals和其他过滤手册进行排序,比如查找或剪切,我仍然没有解决方案。任何建议表示赞赏,谢谢。

2 个答案:

答案 0 :(得分:1)

如果您使用空格分隔文件和时间,则可以使用-k 2对第二列进行排序:

rseaman@Ubuntu-PC:~/temp/20180310/49211913$ ls -l
total 12
-rw-rw-r-- 1 rseaman rseaman  0 Mar 10 18:42 file0
-rw-rw-r-- 1 rseaman rseaman 37 Mar 10 18:10 file1
-rw-rw-r-- 1 rseaman rseaman 22 Mar 10 18:10 file2
-rw-rw-r-- 1 rseaman rseaman 19 Mar 10 18:13 file3
rseaman@Ubuntu-PC:~/temp/20180310/49211913$ stat -c "%n %Y" * | sort -n -k 2
file1 1520705401
file2 1520705411
file3 1520705612
file0 1520707323

如果您希望使用| tr -d ' ',则可以随后删除该空格,但这会干扰其中有空格的文件。

答案 1 :(得分:0)

您可以使用简单的命令列出目录中的文件(按修改时间排序):

ll -trh

OR

ls -ltrh

-t按修改时间排序

排序时

-r逆序

-h with -l,以人类可读格式打印尺寸