Removendo caracteres específicos na string

0

Atualmente, estou escrevendo um script bash e obtive uma lista de locais de arquivos. No entanto, notei que algumas localizações de arquivos têm espaços no nome do arquivo, como por exemplo. : / 1 2 3.txt Tais arquivos afetam o uso de comandos como cp no meu caso. Usar "" e escapar resultará em um espaço após o "". Por exemplo: "/ 1 2 3.txt" com um espaço à frente do local do arquivo, obtive um erro informando "cp: cannot stat '/ 1 2 3.txt': Nenhum arquivo ou diretório". Existe algum outro método para citar um local de arquivo com "" para que o comando cp possa ser usado?

    
por pikachu 25.07.2013 / 08:53

1 resposta

1

Copie todos os arquivos que contenham espaços dentro de nomes de arquivos nos novos arquivos com o mesmo nome, contendo sublinhados em vez de espaços do diretório atual:

for f in *\ *; do cp -- "$f" "${f// /_}"; done

Veja BashFAQ 20 sobre como lidar com nomes de arquivos com segurança.

    
por Radu Rădeanu 25.07.2013 / 08:57