在特定目录中查找文件

TOY*_*TOY 6 ls shell grep directory find

我有一个大学练习,它是“查找名称以“.xls”结尾的目录和带有“SCHEDULE”一词的子目录的所有文件,不使用管道,只使用一些命令 GREP、FIND、CUT,粘贴或 LS

我已经达到了这个命令:

ls *.xls /users/home/DESKTOP/*SCHEDULE
Run Code Online (Sandbox Code Playgroud)

这仅向我显示桌面上的 .xls 文件,并打开名称上带有 SCHEDULE 的所有目录,但是当它执行此操作时,它会向我显示仅包含 .xls 文件的目录中的所有文件。

Kus*_*nda 11

假设“文件”是指“常规文件”,而不是目录、符号链接、套接字、命名管道等。

要查找所有具有文件名后缀.xls并且驻留在当前目录中的目录中或SCHEDULE在其名称中包含字符串的目录下的所有常规文件:

find . -type f -path '*SCHEDULE*/*' -name '*.xls'
Run Code Online (Sandbox Code Playgroud)

随着-type f我们测试的是事物的文件类型find正在处理中。如果是常规文件(f类型),则考虑下一个测试(否则,如果它不是文件,则检查下一个)。

-path测试是对find当前正在检查的文件的完整路径名进行的测试。如果此路径名匹配*SCHEDULE*/*,则将考虑下一个测试。由于模式SCHEDULE中的/后者,该模式将仅在目录名称中匹配(而不是在最终文件名中)。

最后一个测试是针对文件名本身的测试,如果文件名以.xls.

默认情况下,将打印通过所有测试的任何路径名。

您还可以将命令缩短为

find . -type f -path '*SCHEDULE*/*.xls'
Run Code Online (Sandbox Code Playgroud)