GNU Parallel está gerando diretórios ocultos da seguinte maneira usando o --results
parâmetro.
Qual comando eu uso no Ubuntu para alterar todos os diretórios para que eles não fiquem mais ocultos. Os diretórios são chamados:
'.\_ValidateAll.sh GL 170'/
'.\_ValidateAll.sh GL 190'/
'.\_ValidateAll.sh GL 220'/
'.\_ValidateAll.sh GL 355'/
'.\_ValidateAll.sh GL 357'/
'.\_ValidateAll.sh GL 359'/
'.\_ValidateAll.sh GL 361'/
'.\_ValidateAll.sh GL 363'/
Na verdade, quando faço um cat no diretório, não vejo as aspas simples
vmdovs@ubuntu:/mnt/out/1$ cat
GL170/ .\_ValidateAll.sh GL 357/ .\_ValidateAll.sh GL 390/ .\_ValidateAll.sh GL 470/ .\_ValidateAll.sh GL 570/
rename.sh .\_ValidateAll.sh GL 359/ .\_ValidateAll.sh GL 400/ .\_ValidateAll.sh GL 480/ .\_ValidateAll.sh GL 572/
.\_ValidateAll.sh GL 190/ .\_ValidateAll.sh GL 361/ .\_ValidateAll.sh GL 410/ .\_ValidateAll.sh GL 500/ .\_ValidateAll.sh GL 574/
.\_ValidateAll.sh GL 220/ .\_ValidateAll.sh GL 363/ .\_ValidateAll.sh GL 420/ .\_ValidateAll.sh GL 530/ .\_ValidateAll.sh GL 590/
.\_ValidateAll.sh GL 355/ .\_ValidateAll.sh GL 368/ .\_ValidateAll.sh GL 440/ .\_ValidateAll.sh GL 540/ .\_ValidateAll.sh GL 710/
Além disso, cd pode acessar o diretório da seguinte maneira
cd .\\_ValidateAll.sh\ GL\ 190/
Responder1
Se o único problema for que os diretórios estão ocultos, você pode simplesmente remover o .
início do nome para torná-los reexibidos. Por exemplo, usando perl-rename (chamado rename
no Ubuntu):
rename 's/^\.//' '.\_Validate'*
Ou, apenas com ferramentas shell:
for dir in '.\_Validate'*; do echo mv "$dir" "${dir//.}"; done
Porém, ambos deixam você com nomes de diretório horríveis, com espaços, barras e outras coisas desagradáveis. Já que você está renomeando, você também pode renomear para algo sensato:
rename 's/^\.\\//; s/\s+/_/g' '.\_Validate'*
Isso resultará em:
$ ls -d _*
_ValidateAll.sh_GL_100 _ValidateAll.sh_GL_107 _ValidateAll.sh_GL_114
_ValidateAll.sh_GL_101 _ValidateAll.sh_GL_108 _ValidateAll.sh_GL_115
_ValidateAll.sh_GL_102 _ValidateAll.sh_GL_109 _ValidateAll.sh_GL_116
_ValidateAll.sh_GL_103 _ValidateAll.sh_GL_110 _ValidateAll.sh_GL_117
_ValidateAll.sh_GL_104 _ValidateAll.sh_GL_111 _ValidateAll.sh_GL_118
_ValidateAll.sh_GL_105 _ValidateAll.sh_GL_112 _ValidateAll.sh_GL_119
_ValidateAll.sh_GL_106 _ValidateAll.sh_GL_113 _ValidateAll.sh_GL_120
IMPORTANTE: observe que não estou verificando colisão de nomes de arquivos. Se você renomear um deles para algo que já existe, você substituirá o arquivo existente.
Responder2
Você pode usar o GNU Paralelo:
parallel mv {} '{=s/^\.\\_//=}' ::: '.\_ValidateAll'*
Isso removerá .\_
os nomes.
Para também substituir espaços por _ execute:
parallel mv {} '{=s/^\.\\_//; s/\s/_/g=}' ::: '.\_ValidateAll'*
Responder3
Em princípio (e como você provavelmente sabe), arquivos e diretórios ficam ocultos se seus nomes começarem com .
. Assim, você pode torná-los "visíveis" novamente removendo esses arquivos .
. Isso pode ser feito bash
usando as funções integradas de manipulação de strings:
user@host$ for dir in '.\_ValidateAll'*; do newname="${dir#.}"; mv "$dir" "$newname"; done
Seria aconselhável, no entanto, verificar se funciona corretamente, testando-o antecipadamente com
user@host$ for dir in '.\_ValidateAll'*; do newname="${dir#.}"; echo "rename $dir to $newname"; done
Atualizar: você definitivamente deve seguir o conselho da resposta de @terdon para aproveitar a oportunidade e se livrar de todos os caracteres especiais nesse processo.