find コマンドを使用して絶対パスを取得する方法。
実際、次のスクリプトを実行しています。
find . -size +20M | while read a
do
i=$(echo $a | sed 's:/: :g')
echo $a;
j=($i)
fileName=${j[${#j[@]}-1]}
userName=${j[${#j[@]}-3]}
done
ただし、ここでは変数は$a
開始からのパスを示します./Downloads/filename
が、開始から絶対パスが必要です/
。
答え1
絶対パスで検索を使用します。
find /path/ -size +20M
フルパスが印刷されます。
作業ディレクトリがわからない場合は、次のようにコマンド置換を使用してくださいpwd
。
find "`pwd`" -size +20M
#or like this:
find "$(pwd)" -size +20M
作業ディレクトリのインポート
とにかく Bash man は$()
over の使用を推奨しているようですので、2 番目の``
形式を使用する必要があります。また、スクリプトの作業ディレクトリを含む変数を直接参照することもできます。$PWD
これは、ループで使用する必要がある場合はより高速です。
find "$PWD" -size +20M
答え2
次のコマンドを使用するpwd
か、ファイルを印刷できますrealpath
。
$ find "$(pwd)" -size +20M
$ find . -size +20M -exec realpath {} +
どちらのコマンドもファイルの絶対パスを提供します。
答え3
7日前のすべてのPNGファイルとJPEGファイルを絶対パスで一覧表示します。
$ find $PWD/ -mtime -7 -print -exec grep -e ".png\|.jpg" {} \;
これは$PWD
一致するすべてのファイルに追加されます。