공백이 포함된 경로 이름을 읽은 다음 변수를 find 명령에 사용하십시오.

공백이 포함된 경로 이름을 읽은 다음 변수를 find 명령에 사용하십시오.

find 명령을 시작하려면 사용자에게 경로 이름(여기에 공백이 있음)을 물어봐야 합니다.

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

다음을 제공합니다:

My\ folderX/

하지만..

find $folder | sort -rn

다음을 제공합니다:

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

그리고

find "$folder" | sort -rn

다음을 제공합니다:

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

내가 뭐 잘못 했어요? 두 번째 명령이 다음과 같이 처리되어야 하기 때문에 실행되지 않는 이유를 알 수 없습니다.

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

완벽하게 작동합니다.

매우 감사합니다

답변1

With를 사용 하면 이스케이프 문자가 되지 -r read않으므로 the 를 입력하거나 사용하지 마세요 .\\-r

따라서 다음을 시도해 보십시오.

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

/mnt/My folderX탈출구 없이 들어가다

또는

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

그리고 입력합니다 /mnt/My\ folderX(또는 /mnt/My folderX이스케이프하지 않고 - 전체 줄을 읽게 되므로 folder어떤 식으로든 이스케이프할 필요가 없습니다).

관련 정보