查找特定目录中的文件

查找特定目录中的文件

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

我已经达到这个命令:

ls *.xls /users/home/DESKTOP/*SCHEDULE

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

答案1

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

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

find . -type f -path '*SCHEDULE*/*' -name '*.xls'

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

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

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

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

您还可以将命令缩短为

find . -type f -path '*SCHEDULE*/*.xls'

答案2

可以用find . -name "*.xml" -type f -path './file/location/* -exec xmllint --output '{}' --format '{}' \;

这将在 ./file/location/ 下找到 *.xml 文件,并使用 xmllint 处理它们,以使用格式输出每个 .xml 文件。

相关内容