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


11

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絶対パスが必要です/

回答:


16

絶対パスを指定して検索を使用します。

find /path/ -size +20M

パス全体を出力します。
作業ディレクトリがわからない場合は、次のようにコマンド置換を使用しますpwd

find "`pwd`" -size +20M 
   #or like this:
find "$(pwd)" -size +20M

作業ディレクトリを取得するには

とにかく、Bashの人は今では使用$()する``ことを勧めているようですので、2番目の形式を使用する必要があります。おそらく$PWD、スクリプトの作業ディレクトリを含む変数を直接参照することもできます。ループで使用する必要がある場合は、おそらく高速です。

find "$PWD" -size +20M

しかし、私はパスを持っていません、私は持っています。現在のディレクトリとして?
Shivam Sharma 14

2
で始めないでください。代わり.に使用すると、$(pwd)完全なパスが得られます。
bsd 2014

8

pwdコマンドを使用するか、ファイルを印刷できますrealpath

$ find "$(pwd)" -size +20M
$ find . -size +20M -exec realpath {} +

実際の両方のコマンドは、ファイルへの絶対パスを提供します。


しかし、2番目はfind: `realpath ':そのようなファイルまたはディレクトリはありません
Shivam Sharma 14

ハム。coreutilsパッケージによって提供されていますが、インストールされていない可能性があります。で見つけてみてくださいwhich realpath
Spack 2014

それは何も見つけていません..
Shivam Sharma 14

どのシステムを使用していますか?
Spack 2014

Linux BANE 3.7-trunk-amd64#1 SMP Debian 3.7.2-0 + kali8 x86_64 GNU / Linux
Shivam Sharma 14

0

絶対パスで7日経過したすべてのPNGファイルとJPEGファイルを一覧表示します。

$ find $PWD/ -mtime -7 -print -exec grep -e ".png\|.jpg" {} \;

$PWD一致したすべてのファイルにここに追加されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.