スペースを含むパス名を読み取り、変数を 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

私は何が間違っていましたか? 2番目のコマンドを次のように処理する必要があるため、実行されない理由はわかりません。

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何らかの方法でエスケープする必要はありません)。

関連情報