Se você fizer o seguinte:
ls | grep -F -v ' '
Você não verá nenhum arquivo com espaços nos nomes
(Eu costumava ter fgrep
em vez de grep -F
no exemplo, mas como Hauke Laging apontou que é depreciado )
Às vezes, um nome de arquivo é criado a partir de alguns nomes e espaços entre cada nome da seguinte forma:
$ touch "A B C"
$ ls
A B C <-- one file but has three words !
file1
file2
file3
Como posso ignorar (filtrar) o arquivo que realmente criou a partir de alguns nomes como "A B C"?
Saída esperada
$ ls <filter>
file1
file2
file3
Se você fizer o seguinte:
ls | grep -F -v ' '
Você não verá nenhum arquivo com espaços nos nomes
(Eu costumava ter fgrep
em vez de grep -F
no exemplo, mas como Hauke Laging apontou que é depreciado )
Com o GNU ls, ou seja, sob Linux não embarcado:
ls -I '* *'
Não há muito motivo para pular arquivos cujo nome contenha um espaço. Se você está fazendo isso porque tem algo como file_names=$(ls)
ou for f in $(ls)
em um script, não analise a saída de ls , e seu problema provavelmente irá embora.
Usando os globs estendidos do KSH, você pode filtrar nomes de arquivos em uma expansão glob:
ls -d -- !(A B C)
Talvez isso também seja útil:
ls -l --quoting-style=literal:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 A B C
ls -l --quoting-style=locale:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 „A B C“
ls -l --quoting-style=shell:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 'A B C'
ls -l --quoting-style=shell-always:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 'A B C'
ls -l --quoting-style=c:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 "A B C"
ls -l --quoting-style=escape:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 A\ B\ C
Tags ls ksh linux shell-script