忽略文件计数中的特定文件“wc -l”

忽略文件计数中的特定文件“wc -l”

例如,我有类似这样的目录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。以下是一些更安全的方法:

  1. 使用findgrepwc -l对于包含换行符的文件名会失败):

    find /home/terdon/foo -not -name "$file_name"  -name '*.mp4' | grep -c /
    

    -not标志find忽略任何名为 的文件$file_name

  2. 在这种特殊情况下,你的文件不包含空格,并且你可能不需要处理可移植性和语言问题,你使用ls。这只是一个坏习惯。因此,要使用您的原始方法,只需使用 过滤掉您不想要的名称grep -v

     ls -1 /home/ABC/*.mp4 | grep -v "$file_name" | wc -l
    

相关内容