Primeiro de tudo, nunca analisa a saída de ls
. Aqui estão algumas abordagens mais seguras:
-
Use
find
egrep
(wc -l
falha em nomes de arquivos que contêm novas linhas):find /home/terdon/foo -not -name "$file_name" -name '*.mp4' | grep -c /
O
-not
flag faz com quefind
ignore 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