我想以递归方式获取子目录的时间戳并写入新文件。下面是我写的示例脚本。但这并不是递归发生的。
version()5.7.13-0ubuntu0.16.04.2
答案 0 :(得分:2)
问题是ls
忽略了标准输入。相反,尝试:
find /bishare/DLSFTP/$Year* -type d -exec ls -dlrt {} +
举个例子,让我们运行ls -d
,不带参数,也不运行stdin:
$ ls -d
.
现在,让我们在stdin:
上提供目录A
的名称
$ echo A | ls -d
.
如您所见,ls
忽略了标准输入。现在,让我们在命令行中提供名称A
:
$ ls -d A
A
这成功了。 ls
返回目录A
的名称。
在find
命令中,-exec ls -lrt {} +
告诉find
在ls -lrt
之后的命令行中找到它找到的目录名称,然后执行ls
。这就是你需要的。
另请注意,ls -lrt
将报告目录中的文件。要仅显示有关目录的信息,请使用-d
:ls -dlrt
。
如果您系统上的find
支持-printf
,那么我们可以取消使用ls
并获取输出的自定义格式(小贴士:tripleee) 。例如:
find . -type d -printf '%t %p\n'
%t
打印时间戳,%p
打印目录名称。 GNU find
支持此功能。
虽然缺少ls
或find -printf
的格式灵活性,但还有另一种选择:find
有-ls
动作:
find . -type d -ls
这也可能需要GNU find
。