ファイルが存在することを確認しています。find
コマンドは次のとおりです。
find ${pwd} | grep 'Test.*zip'
このコマンドは相対パスとともに出力を返します。例:
./ReleaseKit/Installable/Test-5.2.0.11.zip
find
コマンドを使用して見つかったファイルの絶対パスを取得する方法はありますか?
答え1
あなたの問題
find ${pwd} | grep 'Test.*zip'
という変数がないということですpwd
。だからこれは同じですfind | grep 'Test.*zip'
。現在のディレクトリを開始点として使用しようとしています。
プログラムを実行するには、または$(pwd)
代わりに$PWD
別のPOSIXシェルによって維持される変数を使用して現在のディレクトリを指定します${pwd}
。すべてのシェルがPOSIXであるわけではありません。また、ディレクトリパスに奇妙な文字が表示されないように、変数やコマンドの置き換えを引用する必要があります。$(pwd)
pwd
$PWD
bash
find "$PWD" | grep 'Test.*zip'
答え2
はい、しかし、文にはより多くのパラメータ(パス+ファイル+アクション)が必要な場合があります。おそらく、次のようにコマンドを設定する場合です。
$> find {path} -iname {file} -exec {action} \;
使用リンクを読む絶対パスを取得するコマンド (Linux および OS/X)
前任者。
$> find ./www/project/ -iname 'Test*.zip' -exec readlink -f {} \;
/opt/www/project/Test-5.2.0.11.zip
/opt/www/project/Test-5.2.0.13.zip
答え3
報告されたパス名は、find
常にそのパスが見つかった最上位の検索パスで始まります。したがって、絶対パスを検索パスとして使用します。
find "$PWD" -name 'Test*zip'
このPWD
変数は現在のディレクトリの絶対パス名を保持します。
検索パスが指定されていない場合、GNU はデフォルトfind
で現在のディレクトリ.
(「ドット」)を検索パスとして使用します。これはという変数がないため、あなたの場合に発生しますpwd
。これはfind
、チェックされたすべてのパス名がドットで始まることを意味します。他のほとんどの実装では、検索パスが指定されていないとエラーが発生します。
$ unset pwd
$ find $pwd
usage: find [-dHhLXx] [-f path] path ... [expression]