将目录/文件输入文本文件,然后显示早于特定日期的文件

时间:2018-10-05 13:48:16

标签: linux bash ls

我正在使用“ ls -alR”将目录和这些目录中的文件输入到另一个文本文件中。

ls -alR > testalR.txt

文本文件的创建如下:

./test-file_folders/test_folder_1:
total 400
drwx------ 5 "user" "group" "size" May 2 10:30 test_file_1
....     file info    ... more file info   ....test_file_2
...more files 


./test-file_folders/test_folder_2:
total 400
drwx------ 5 "user" "group" "size" Oct 2 11:35 test_file_1
....     file info    ... more file info   ....test_file_2
...more files 

我正在尝试显示自2018年10月2日以来尚未访问的文件。 我尝试过:

`sed -n '/Oct 2 00:00/,/Oct/ 2 23:59/p' /testalR.txt

..但是没有结果。有没有更好的方法来显示这种情况甚至可能?

对不起,首先应该添加此内容。我知道使用find -atime变体将是最好的选择。但是我们使用的系统和进程受find命令的困扰。我正在尝试寻找替代方法,这样可以避免使用“查找”,并且不必在每次要运行搜索时都直接访问目录。

2 个答案:

答案 0 :(得分:1)

解析ls的输出是一个滑坡。

使用find

find . -type f -atime +3 -print

find . -type f -atime +3 -exec ls -uld {} +

使用-print仅返回文件名列表。使用-exec ls -ld {} +会使返回的每个文件运行ls,从而为您提供所需的详细信息。

参数。至atime(或mtimectime)以24小时为步长。参数可以是正数或负数(或零)。使用-atime +3查找至少四天前已访问的文件。

使用-exec ... {} +将对返回的每个对象执行“ ...”中的命令,一次捆绑尽可能多的对象(文件)。这比为每个返回的文件派生一个进程要有效得多,例如:

... -exec ls -uld {} \;

将结果限制为特定日期的一种方法是创建两个参考点(文件),如下所示:

touch -amt 201809302359 f1
touch -amt 201810012359 f2
find . -type f \( -anewer f1 -a ! -anewer f2 \) -exec ls -uld -exec {} +

答案 1 :(得分:0)

尝试查找:

find /folder -atime +30 

其中+30 =天

其他参数:人找到