web-dev-qa-db-ja.com

Locateコマンドの出力からどのように詳細を取得しますか?

ls -lコマンドを実行すると、現在のディレクトリにあるファイルの詳細(アクセス許可、所有者、グループ、ファイルサイズなど)が表示されます。

locateを実行するときにファイルの場所だけでなく、これらの同じ詳細を取得する方法はありますか?

6
user784637

locateデータベースには名前以外の情報は含まれていないため、lsなどのその他のツールをlocate出力で実行する必要があります。

lsloc() {
  locate "$@" | 
    while read -r name; do
      ls -ld "$name"
    done
}
lsloc pattern
5
enzotib

locateの出力をxargsにパイプします(パラメーターとしてls -lxargsに追加します)。これにより、どちらのコマンドでも必要なオプションを使用できます。また、-0(ダッシュゼロ)オプションを両方のコマンドに渡すことにより、ファイル名の空白や改行の意図しない解釈からも保護します。たとえば、システム上のすべての.isoファイルの詳細を取得するには:

locate -0 -r '.*.iso$' | xargs -0 ls -l
5
Mark.Workman

サブシェルを使用する

ls -l "`locate -b 'search_pattern'`"

または

ls -lh "$(locate -b 'search_pattern')"

必要に応じて〜/ .bashrcに関数を追加できます

function lsloc () { ls -l "$(locate -b "$1") ;}

あなたはその後

lsloc "search pattern"
3
Panther