ls -l
コマンドを実行すると、現在のディレクトリにあるファイルの詳細(アクセス許可、所有者、グループ、ファイルサイズなど)が表示されます。
locate
を実行するときにファイルの場所だけでなく、これらの同じ詳細を取得する方法はありますか?
locate
データベースには名前以外の情報は含まれていないため、ls
などのその他のツールをlocate
出力で実行する必要があります。
lsloc() {
locate "$@" |
while read -r name; do
ls -ld "$name"
done
}
lsloc pattern
locate
の出力をxargs
にパイプします(パラメーターとしてls -l
をxargs
に追加します)。これにより、どちらのコマンドでも必要なオプションを使用できます。また、-0
(ダッシュゼロ)オプションを両方のコマンドに渡すことにより、ファイル名の空白や改行の意図しない解釈からも保護します。たとえば、システム上のすべての.isoファイルの詳細を取得するには:
locate -0 -r '.*.iso$' | xargs -0 ls -l
サブシェルを使用する
ls -l "`locate -b 'search_pattern'`"
または
ls -lh "$(locate -b 'search_pattern')"
必要に応じて〜/ .bashrcに関数を追加できます
function lsloc () { ls -l "$(locate -b "$1") ;}
あなたはその後
lsloc "search pattern"