Bash命令从每个文件夹递归获取第一个和最后一个文件

上帝啊

我有一个目录

我的主要DIR是 /tmp/folder

里面/tmp/folder只有X个文件夹(没有文件)。例如

/tmp/folder/1
/tmp/folder/2
/tmp/folder/3
/tmp/folder/4
/tmp/folder/5

在这些文件夹中,有许多相同扩展名的文件。我想从这些文件夹的每个文件夹中获取最后一个和第一个创建的文件(修改时间)。

我更喜欢这样的输出

/tmp/folder/1,OLD_FILE,NEW_FILE
/tmp/folder/2,OLD_FILE,NEW_FILE
/tmp/folder/3,OLD_FILE,NEW_FILE
/tmp/folder/4,OLD_FILE,NEW_FILE
/tmp/folder/5,OLD_FILE,NEW_FILE

我将使用脚本来解析此输出,因此您可以执行所需的任何输出,但是请以友好的方式进行操作,以便我可以轻松地对其进行解析。

bash命令应仅为1

罗伯特·L
find "$DIR" -type d | while read d; do echo "$d,$(ls -t "$d" | sed -n '1h; $ { G; s/\n/,/g; p }')"; done

或者,以更具可读性的格式并使用额外的变量进行演示:

find "$DIR" -type d |
while read d;
do
    files=$(ls -t "$d" | sed -n '1h; $ { G; s/\n/,/g; p }')
    printf '%s,%s\n' "$d" "$files";
done

这将找到$DIR使用该find命令的所有子目录对于找到的每个ls -tr文件,用于获取该目录中按日期排序的文件列表,从最新到最新。

管的输出ls -trsed用逗号将第一和最后一行:选项-n抑制缺省输出,1h保存在第一行(最新文件名)的保持空间,并在该文件(由所选的最后一行$)附加的保持空间(最新文件名)与H模式空间(由换行符分隔),并将该换行符更改为逗号。

然后,脚本printf使用子目录名称,后跟逗号,后跟来自的文件sed

对于最旧/最新选择,这不会区分目录和文件,因此,如果您不希望目录在那里,则需要过滤输出ls -t以删除目录。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从网址获取第一个和最后一个文件夹

如何截断提示中显示第一个和最后一个文件夹的工作目录?

打开递归文件夹列表中的第一个文件

如何获取文件中的第一个和最后一个日期

分别在每个文件夹分支中查找第一个匹配项

如何使用 bash 从除第一个文件夹之外的所有路径获取

Windows批处理:获取以某个值开头的第一个文件夹名称?

播放随机文件夹/子文件夹中的第一个视频

Linux bash解析json:获取第一个和最后一个日期

将第一个文件从每个文件夹复制到Windows中的新位置

使用python复制文件夹和子文件夹,但只复制子文件夹中的第一个文件

WinRAR批处理文件,用于将每个文件夹中的第一个子目录压缩为一个zip文件

bash列出当前文件夹中的子文件夹没有得到预期的结果[仅提供第一个文件夹]

使用命令提示符打开文件夹中的第一个文件

批处理脚本 - 从根位置开始快速递归查找第一个文件夹

如何删除不包含父文件夹和第一个子文件夹的文件夹?

在AHK中打开文件夹中的第一个文件的方法

Powershell从文件夹中捕获第一个文件名

如何打开文件夹中的第一个文件

将第一个文件创建到文件夹中并运行它 ssh

将第一个文件夹设置为可变批处理文件

使用 OSX 终端在该文件夹内的第一个文件后重命名文件夹

如果文件夹长度超过限制,则删除文件夹中的第一个文件

使用递归查找列表的第一个和最后一个元素

获取表中存在的每个日期的第一个和最后一个记录号

PostgreSQL:获取每个ID列的第一个和最后一个插入的记录

如何使用SQL获取列中每个分区的第一个和最后一个值

如何迭代文件夹以获取第一个子目录中的内容?

从文件夹中获取文件名从第二个文件而不是从第一个文件开始