我find
用来获取文件列表,然后用 grep 对其进行路径匹配:
$ find pc* | grep -i arthur
pc6/arthurv/untitled-2.py
pc6/arthurv/untitled-3.py
pc6/arthur.py
pc9/Arthur 4C
pc9/Arthur 4C/untitled-1.py
pc9/Arthur 4C/untitled-2.py
我想做喜欢ls -F
并为每个目录附加一个/
。
或者,如何查找以显示所有匹配不区分大小写的目录arthur
?
您可以在
find
表达式中使用析取来实现条件处理;使用 GNUfind
:将在以匹配“pc*”的文件和目录开头的路径中查找所有内容,并打印它们的名称,如果它们是目录,则后跟一个“/”。
其工作方式如下:
pc*
指定开始的路径;-type d
匹配目录;-printf "%p/\n"
打印当前处理文件的路径,后跟“/”和换行符;因为它紧随其后-type d
,所以只有在匹配时才会执行-type d
(有一个隐式连词);-o
引入析取:如果它前面的表达式不匹配,则它后面的表达式将被评估(并且它前面的表达式-type d -printf "%p/\n"
在这里,因为连接比析取具有更高的优先级);-print
打印当前处理文件的路径。find
可以使用其他表达式来显示所有匹配不区分大小写的“arthur”的目录:find
有大量的选项和细节。另一种变体是使用-printf
with%y
在哪里
%y
添加“d”或“f”就像ls -l
只是在此处添加答案以列出所有文件和目录:
输出:
以前
dir1/dir2
没有斜杠的问题:最终是为了能够比较 tar 文件和目录。