mlocate: cách chỉ in tệp [trùng lặp]
Oct 01 2020
Tôi có phiên bản định vị sau:
$ locate --version
mlocate 0.26
Copyright (C) 2007 Red Hat, Inc. All rights reserved.
This software is distributed under the GPL v.2.
This program is provided with NO WARRANTY, to the extent permitted by law.
Tôi đang cố gắng tìm tất cả các tệp (không phải thư mục) có một số tên cơ sở cụ thể, ví dụ: pythonvì vậy tôi đã thử như sau:
$ xargs -a <(locate -b '\python') -I{} file {} | sed -E '/directory|symbolic/d;s/:.*$//g'
Điều này in ra chính xác đầu ra mong đợi. Tuy nhiên, tôi tự hỏi liệu có cách nào hiệu quả để đạt được điều đó không?
Trả lời
3 choroba Oct 01 2020 at 05:13
Các lệnh của bạn cũng xuất ra các tệp mà người dùng hiện tại không có quyền truy cập.
Giải pháp ngắn hơn một chút sẽ là
locate -0b '\python' | perl -0nE 'say if -f'
nhưng nó không in các tệp không thể truy cập.
Bạn cũng có thể sử dụng bash để lặp lại các tệp, nhưng nó dài dòng hơn một chút:
locate -0b '\python' | while IFS= read -d '' -r f ; do
[[ -f $f ]] && printf '%s\n' "$f"
done