在离线备份驱动器上search文件名的命令行工具

我正在寻找一个开源(命令行)工具来注册和search文件名级别的所有(备份)驱动器。 我想search文件和文件夹名称,最好写成正则expression式或文件全局模​​式。 外部驱动器只包含正常的HFS和NTFS文件系统。 备份是通过直接文件复制完成的。

要求是该工具在OS X上编译,并且不需要连接每个驱动器,而是在驱动器包含具有我search的模式的文件的情况下指向驱动器。

目前,我使用一个手工编写的脚本解决scheme与locate数据库,每个外部备份驱动器一个,但这是相当繁琐,因为locate本身可以访问一次只有一个数据库,并不包含任何pipe理系统的所有索引/数据库。

有没有其他的工具呢?

根据您的需要修改您的脚本解决scheme不是更容易吗? 例如,你可以将你的备份索引存储在一个目录中(比如/var/local/backupindex ),然后使用wrapper脚本来定位。

 #!/bin/bash db_dir=/var/local/backupindex case "$1" in find) for db in "$db_dir"; do db_name="$(basename "$db")" last_changed="$(stat -f "%m" "$db")" for pattern in "$@"; do locate -d "$db" "$pattern" | sed "s/.*/$db_name ($last_changed): &/" done done ;; update) # add code to derive $db_name from external drive identifier, eg: #sn=$(system_profiler SPUSBDataType | awk '/Serial/ {print $3}') #[[ $sn =~ 123456 ]] && db_name=sn_123456.db updatedb --localpaths='/mount/point' --output=$db_name ;; *) echo "Unknown subcommand: $1" 1>&2 exit 1 ;; esac exit 0 

这将会在数据库文件的名称和上次修改文件的date前加上每个匹配的定位返回。 通过使第一个参数成为一个子命令,您可以在同一个脚本中实现查询,更新,清理等。