Làm cách nào để thêm các thư mục cụ thể vào đường dẫn tìm kiếm Cập nhậtbb (định vị)?


7

Tôi giữ nhạc số và ảnh kỹ thuật số của mình trong các thư mục trong phân vùng Windows, được gắn /media/win_ctrên hộp khởi động kép của tôi. Tôi muốn bao gồm những thư mục đó nhưng chỉ những thư mục đó trong locatecơ sở dữ liệu. Tuy nhiên, theo như tôi có thể tìm ra, updatedb.confchỉ cung cấp các tùy chọn để loại trừ các thư mục, không thêm chúng. Tất nhiên, tôi có thể loại bỏ /mediakhỏi PRUNEPATHS, và sau đó thêm một loạt các thư mục con ( /media/win_c/Drivers, /media/win_c/ProgramData...) nhưng điều này có vẻ là một cách rất khó hiểu khi thực hiện điều đó Chắc chắn có một giải pháp thanh lịch hơn?

(Tôi đã cố gắng chỉ tạo các liên kết mềm đến các thư mục Windows từ một phân vùng linux được lập chỉ mục, nhưng điều đó dường như không có ích.)


Những gì bạn thực hiện updateb? Có một số. Hãy cho chúng tôi đầu ra của updatedb --version.
Gilles 'SO- ngừng trở nên xấu xa'

Xin lỗi, đã cho rằng - "updateb (mlocate) 0.26"
ionh

Câu trả lời:


4

Không có tùy chọn cho điều đó trong updatedb.conf. Bạn sẽ phải sắp xếp để vượt qua các tùy chọn để updatedbthủ công.

Với cập nhật từ findutils GNU , vượt qua --localpaths.

updatedb --localpaths '/ /media/win_c/somewhere/Music /media/win_c/somewhere/Photos'

Với updateb từ mlocate , không có cách nào để chỉ định nhiều gốc hoặc loại trừ một thư mục khỏi việc cắt tỉa, vì vậy tôi nghĩ rằng bạn bị mắc kẹt với một cơ sở dữ liệu trên mỗi thư mục. Đặt biến môi trường LOCATE_PATHcho danh sách cơ sở dữ liệu:

updatedb --output ~/.media.mlocate.db --database-root /media/win_c/somewhere --prunepaths '/media/win_c/somewhere/Videos'

export LOCATE_PATH="$LOCATE_PATH:$HOME/.media.mlocate.db"

3

Với việc thực hiện "mlocate", sử dụng --database-roottùy chọn mà không cần cắt tỉa bất cứ thứ gì. Trong trang manbb được cập nhật (8):

-U, --database-root PATH
    Store only results of scanning the file system subtree rooted at
    PATH  to  the  generated  database.   The  whole  file system is
    scanned by default.

Nhưng bạn cũng có thể cần phải sử dụng một tệp đầu ra riêng biệt ( --output). Tôi không chắc chắn rằng bạn có thể hợp nhất cả hai cơ sở dữ liệu (bạn có thể thử).

Các triển khai khác có thể có các tùy chọn tương tự.


Đó là việc thực hiện mlocate. Thực hiện cập nhật khác nhau có các tùy chọn khác nhau.
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles Cảm ơn, thực sự tôi đang sử dụng mlocate. Tôi đã chỉnh sửa câu trả lời của mình. Tôi sẽ ngạc nhiên nếu các triển khai khác không có tùy chọn tương tự.
vinc17

Sử dụng "định vị" trong Ubuntu, lệnh là những gì bạn đã trả lời, đồng thời thêm xuất dưới dạng câu trả lời đầu tiên chỉ ra để đảm bảo xác định vị trí bao gồm đường dẫn gốc và đường dẫn vừa thêm
Diego Andrés Díaz Espinoza

0

gotscha bây giờ tôi đã nhận nó .. hoặc? mlocate không dễ dàng như vậy nhưng điều này hoạt động khá tốt đối với mỗi -U, --database-root PATH trong mlocate có vẻ như bạn cần một db mới!?

Cách sử dụng: <script>'hạn'

#!/bin/dash


dbfile="$HOME/.recordings.locate.db";
daysToUpdate=7;
create=0;

# list of paths
paths="/master/media/music /media/recordings";

# list of terms
termA=$( echo "$1" | sed 's/ /\\ /g' );
termB=$( echo "$1" | sed 's/ /_/g' );

# realtime scan:
#find $paths -iname "*$termA*" -o -iname "*$termB*"


# -- 

if [ ! -f "$dbfile" ]; then
    create=1;
fi


if [ "$create" -ne 1 ] && [ $(find "$dbfile" -mtime +$daysToUpdate -print) ];
then
    echo "File $dbfile exists and is older than $daysToUpdate days"
    create=1;
fi


if [ "$create" = "1" ] ; then
    echo "Update custom dbs please wait...";
    touch "$dbfile"; # mark for inside actions
    cnt=0;
    for path in $paths
    do
        echo "scan: $path to $dbfile.$cnt";
        updatedb -l 0 -U $path -o "$dbfile.$cnt";
        cnt=$(expr $cnt + 1);
    done
fi


cnt=0;
for path in $paths
do
    echo "scan: $path of cache $dbfile.$cnt";
    locate -d "$dbfile.$cnt" $termA
    locate -d "$dbfile.$cnt" $termB
    cnt=$(expr $cnt + 1);
done
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.