使用以下命令,我可以列出与当前目录相关的所有目录以及上次修改的纪元时间:
find . -exec stat -c '%n: %Y' {} \;
输出如下所示:
.: 1569247414
./a_file.txt: 1561624333
./some_folder: 1561624645
./some_folder/some_file.txt: 1561624645
./some_folder/another_file.txt: 1536557809
我该如何去掉每个条目开头的“./”,并且如果它是一个目录则添加“/”?
作为奖励,删除第一个条目“。”(即当前文件夹)就好了。
干杯
答案1
- 添加
-mindepth 1
去掉.
深度==0的 - 替代方案:使用
find *
而不是find .
- 使用以下方法将文件与文件夹分开:
-type d ... -or -type f ...
- 使用
+
而不是\;
来发送多个文件stat
;它可以处理它并且会更快!
find * \
-type d -exec stat -c '%n/: %Y' {} + \
-or -type f -exec stat -c '%n: %Y' {} +
但...
-exec stat
你根本不需要!
- 使用
find
s bultin-printf
打印最后修改日期(%Cs
相当于stat
's%Y
)。 -printf '%P'
而不是%p
还会让您摆脱./
每个文件名开头的。
find . -mindepth 1 \
-type d -printf '%P/: %Cs\n' \
-or -type f -printf '%P: %Cs\n'
输出:
a_file.txt: 1561624333
some_folder/: 1561624645
some_folder/some_file.txt: 1561624645
some_folder/another_file.txt: 1536557809