leia o nome do caminho com espaços e use a variável no comando find

3

Eu preciso pedir ao usuário para fornecer um nome de caminho (que terá aqui um espaço) para iniciar um comando de localização:

read -r -e -p "Folder:" folder
Folder :/mnt/My\ folderX/
echo $folder

dá:

My\ folderX/

Mas ..

find $folder | sort -rn

dá:

find: /mnt/My\: No such file or directory
find: folderX/: No such file or directory

e

find "$folder" | sort -rn

dá:

find: /mnt/My\ folderX/: No such file or directory

Há algo que eu fiz de errado? Não consigo descobrir por que o segundo comando não será executado, já que deve ser considerado como:

find /mnt/My\ folderX/ | sort -rn

que funciona perfeitamente.

Muito obrigado

    
por Vinh Francis Guyait 04.03.2017 / 15:13

1 resposta

6

Com -r read impedirá que o \ seja um caractere de escape, ou não digite o \ ou não use -r .

Então, tente da seguinte forma:

read -rep "Folder: " folder
find "$folder" | sort -rn

e insira /mnt/My folderX sem nenhum escape

ou

read -ep "Folder: " folder
find "$folder" | sort -rn

e digite /mnt/My\ folderX (ou /mnt/My folderX sem o escape - você lerá toda a linha em folder para não precisar escapar dela de qualquer forma)

    
por 04.03.2017 / 15:47