Primeiro de tudo, nunca analisa a saída de ls . Aqui estão algumas abordagens mais seguras:
-
Use
findegrep(wc -lfalha em nomes de arquivos que contêm novas linhas):find /home/terdon/foo -not -name "$file_name" -name '*.mp4' | grep -c /O
-notflag faz com quefindignore qualquer arquivo chamado$file_name. -
Nesse caso específico, onde seus arquivos não contêm espaço em branco e você provavelmente não precisa lidar com problemas de portabilidade e de idioma, você pode usar
ls. É apenas um mau hábito de entrar. Então, para usar sua abordagem original, basta filtrar os nomes que você não quer usandogrep -v:ls -1 /home/ABC/*.mp4 | grep -v "$file_name" | wc -l