例如,我有类似这样的目录ABC
。并且此目录包含以下文件(它包含许多文件,我在这里只包含 4 个文件)
2014-04-29T06-19-20_17368f93ce.mp4.uploaded
2014-04-29T06-19-20_17368f93ce.mp4
2014-04-29T06-18-20_17368f93ce.mp4
我有一个file_name
变量,它包含目录中存在的文件名之一ABC
。
IEfile_name=2014-04-29T06-19-20_17368f93ce.mp4
*ABC*
我正在使用以下命令查找目录中仅以 .mp4 结尾的文件总数
ls -1 /home/ABC/*.mp4 | wc -l
所以我只想记录变量ignore
中的计数file_name
意味着file_count
只忽略 file_name 中的文件。
答案1
首先,永远不要解析输出ls
。以下是一些更安全的方法:
使用
find
和grep
(wc -l
对于包含换行符的文件名会失败):find /home/terdon/foo -not -name "$file_name" -name '*.mp4' | grep -c /
该
-not
标志find
忽略任何名为 的文件$file_name
。在这种特殊情况下,你的文件不包含空格,并且你可能不需要处理可移植性和语言问题,你能使用
ls
。这只是一个坏习惯。因此,要使用您的原始方法,只需使用 过滤掉您不想要的名称grep -v
:ls -1 /home/ABC/*.mp4 | grep -v "$file_name" | wc -l