Unix 列出包含具有特定文件扩展名的文件的目录时出现问题
如何仅列出包含特定文件的目录。我正在Solaris设备上运行。例如,我想列出目录ABC的子目录,其中包含以.out、.dat和.log结尾的文件Unix 列出包含具有特定文件扩展名的文件的目录时出现问题,unix,solaris,Unix,Solaris,如何仅列出包含特定文件的目录。我正在Solaris设备上运行。例如,我想列出目录ABC的子目录,其中包含以.out、.dat和.log结尾的文件 谢谢以下几点可能适合您: find ABC/ \( -name "*.out" -o -name "*.log" \) -print | while read f do echo "${f%/*}" done | sort -u sort-u位可以只是uniq,但两者都可以工作 应该在bash或ksh上工作。在/bin/sh上可能没有那么多-您必
谢谢以下几点可能适合您:
find ABC/ \( -name "*.out" -o -name "*.log" \) -print | while read f
do
echo "${f%/*}"
done | sort -u
sort-u
位可以只是uniq
,但两者都可以工作
应该在
bash
或ksh
上工作。在/bin/sh
上可能没有那么多-您必须用类似echo“${f}”的东西替换变量扩展/[^/]*$;;'代码>或其他将剥离路径最后一个组件的内容dirname“${f}”
会很好,但我不记得Solaris是否包含该实用程序…谢谢大家。我想补充这个问题。在列出文件并查看它们之后,如果需要,是否可以使用一个命令或脚本来删除它们?我知道我可以为每个目录执行rm-R,但是如果有一种方法可以编写脚本,那么我更喜欢这种方法。我正在用bash shell运行solaris 10。。。。提前感谢。如果路径中没有空格或其他shell特殊字符,那么在命令末尾添加| xargs rm-r
应该可以。如果名字中有什么东西会引起贝壳的悲伤,那么读d时;do rm-r“${d}”;完成
可能会更好。。。