我可以使用ls | grep -c /full/path/to/file来计算一个文件的出现次数吗?但是执行命令的目录不是我要查找的文件所在的目录。假设我想查看“results”目录中有多少个 .txt 文件,当我在另一个目录中时,我可以执行类似ls | grep -c /full/path/to/results/*.txt的操作吗?虽然我在那个目录下有 .txt 文件,但是当我从另一个目录运行这个命令时,我总是得到一个零:(发生了什么事?我可以只对当前目录使用ls吗?
ls | grep -c /full/path/to/file
ls | grep -c /full/path/to/results/*.txt
ls
wgx48brx1#
您必须使用ls <dirname>。纯 ls 默认仅用于当前目录。您尝试执行的操作可以通过find <dir> -name "*.txt" | grep -c txt或find <dir> -name "*.txt" | wc -l完成但是你也可以做ls * | grep \.txt$,请阅读手册,找出不同之处。
ls <dirname>
find <dir> -name "*.txt" | grep -c txt
find <dir> -name "*.txt" | wc -l
ls * | grep \.txt$
unftdfkk2#
/foo/bar/*.txt
/foo/bar/.*\.txt
full path
grep -c
2条答案
按热度按时间wgx48brx1#
您必须使用
ls <dirname>
。纯 ls 默认仅用于当前目录。您尝试执行的操作可以通过
find <dir> -name "*.txt" | grep -c txt
或find <dir> -name "*.txt" | wc -l
完成但是你也可以做
ls * | grep \.txt$
,请阅读手册,找出不同之处。unftdfkk2#
/foo/bar/*.txt
是glob。请尝试/foo/bar/.*\.txt
ls
列出了你当前目录下的文件和目录。它不会列出full path
。做一些测试,你会很容易看到它。ls
可能会在一行中输出结果,这可能会使您的grep -c
给予不正确的结果。