O script que você encontrou é defeituoso com a análise de saída do comando ls
(você pode ler sobre por que você não deve usar ls
no script aqui ).
Uma abordagem melhor é usar o comando find
e canalizar sua saída para xargs
.
Como no script original você opera nos arquivos que estão em um diretório específico, adaptei o comando de acordo. Navegue até o diretório onde você deseja ocultar os arquivos e execute a parte abaixo:
find . -maxdepth 1 -type f ! -name ".*" -printf "%f
-type f
" | xargs -0 -I file mv file .file
Aqui está uma pequena demonstração no meu diretório pessoal. Eu crio 3 arquivos e uso o comando acima para escondê-los.
$ touch file1 file2 file3
$ find . -maxdepth 1 -type f ! -name ".*" -printf "%f$ ls
dirone/ dirthree/ dirtwo/
$ find . -maxdepth 1 -type d ! -name ".*" -printf "%f$ touch file1 file2 file3
$ find . -maxdepth 1 -type f ! -name ".*" -printf "%f$ ls
dirone/ dirthree/ dirtwo/
$ find . -maxdepth 1 -type d ! -name ".*" -printf "%f%pre%" | xargs -0 -I file mv file .file
$ ls
$ ls -a
./ ../ .dirone/ .dirthree/ .dirtwo/
" | xargs -0 -I file mv file .file
$ ls -a
./ .bash_logout Desktop/ .file1 .gnupg/ .macromedia/ Pictures/ .ssh/ .xsession-errors
../ .bashrc .dmrc .file2 .ICEauthority .mkshrc .profile Templates/ .xsession-errors.old
.adobe/ .cache/ Documents/ .file3 .lesshst .mozilla/ .psensor/ Videos/
.bash_history .config/ Downloads/ .gconf/ .local/ Music/ Public/ .Xauthority
" | xargs -0 -I file mv file .file
$ ls
$ ls -a
./ ../ .dirone/ .dirthree/ .dirtwo/
" | xargs -0 -I file mv file .file
$ ls -a
./ .bash_logout Desktop/ .file1 .gnupg/ .macromedia/ Pictures/ .ssh/ .xsession-errors
../ .bashrc .dmrc .file2 .ICEauthority .mkshrc .profile Templates/ .xsession-errors.old
.adobe/ .cache/ Documents/ .file3 .lesshst .mozilla/ .psensor/ Videos/
.bash_history .config/ Downloads/ .gconf/ .local/ Music/ Public/ .Xauthority
O acima funciona para arquivos. Para que funcione para diretórios, basta alterar -type d
para %code% .
Demo:
%pre%