gpt4 book ai didi

bash - 如何使用bash匹配不同目录下的文件名

转载 作者:行者123 更新时间:2023-11-29 09:23:59 25 4
gpt4 key购买 nike

我正在尝试编写一个 bash 脚本来搜索两个给定的目录,并将给我所有匹配的文件名和每个文件的信息

我不确定从哪里开始,我一直在尝试 diff、find、grep 并且无法使任何工作正常...任何建议将不胜感激。

我确实发现,如果我使用 diff -srq testdir1 testdir2 它匹配相同的文件,但如果一个文件的大小改变它不再匹配,我只需要按名称匹配。

最佳答案

你想加入

我有两个目录,ab:

ls a b
a:
1 2 23 3

b:
1 3 4

join 将逐行连接两个(排序的)文件并打印出公共(public)行:

$ join <(ls a) <(ls b)
1
3

Join 的工作原理是在每个文件的每一行中加入一个字段(字段由制表符和空格字符分隔)。默认情况下,这是第一个字段,但如果不是第一个,您可以指定字段编号。使用它,您可以使用 ls -l 并添加额外的文件信息:

$ join -1 9 -2 9 <(ls -l a) <(ls -l b)
total 0 total 0
1 -rw-r--r-- 1 joeuser 5000 0 Sep 29 17:12 -rw-r--r-- 1 joeuser 5000 0 Sep 29 17:12
3 -rw-r--r-- 1 joeuser 5000 0 Sep 29 17:12 -rw-r--r-- 1 joeuser 5000 0 Sep 29 17:12

这会将两行合并为一行,因此您可以看到有关每个文件的信息(在我的示例中,它们是相同的,因为我同时创建了它们)。

使用此解决方案时,请注意如果文件名中包含非单词字符,ls 输出对于解析并不总是可靠:http://mywiki.wooledge.org/ParsingLs

关于bash - 如何使用bash匹配不同目录下的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19084748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com