rm e mv também podem detectar os diretórios muito bem, mas você digita: rm file
, então o shell irá ignorar o espaço em branco.
Existem algumas coisas que você pode fazer para contornar isso. O mais fácil é encapsular o nome do arquivo entre aspas. Outra solução é escapar do caracter especial, por ex. com uma barra invertida
Exemplo:
touch "testfile "
host:/home/username/test>ls -al
total 12
drwx------ 2 hennes users 4096 Sep 26 02:44 .
drwxr-xr-x 34 hennes users 8192 Sep 26 01:39 ..
-rw------- 1 hennes users 0 Sep 26 02:44 testfile
Agora, para excluí-los:
rm "testfile "
ou
rm testfile\
(observe o espaço em branco após a barra invertida)
Quanto aos nomes de arquivos terminados em um ponto. Eu não consigo reproduzir o problema. Tem certeza que termina em um ponto e não em algum outro caracter especial?
toad:/home/hennes/test>bash --version GNU bash, version 4.1.10(1)-release (amd64-portbld-freebsd7.3) Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. toad:/home/hennes/test>touch Fun. toad:/home/hennes/test>ls Fun. toad:/home/hennes/test>rm Fun. toad:/home/hennes/test>ls toad:/home/hennes/test>
Se for outro caracter do que um ponto, leia o Separador de arquivos internos no bash. Você pode configurá-lo para outra coisa, ou apenas usar os comandos sunch como encontrar com -print0. (Exemplo find /path/to/search-name 'SomeFilePattern*' -print0 | some_command
)