find unixコマンドを使用して絶対パスを取得する方法

find unixコマンドを使用して絶対パスを取得する方法

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一致するすべてのファイルに追加されます。

関連情報