stat 命令格式为在目录的文件名后附加“/”,并从前面删除“./”

stat 命令格式为在目录的文件名后附加“/”,并从前面删除“./”

使用以下命令,我可以列出与当前目录相关的所有目录以及上次修改的纪元时间:

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你根本不需要!

  • 使用finds 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

相关内容