浏览当前目录并查找以“lib”开头的文件并排除子目录

浏览当前目录并查找以“lib”开头的文件并排除子目录

我想在当前目录中搜索以“lib”开头的文件。我想消除子目录。

我正在尝试以下命令,但它没有给出任何文件。以下命令有什么问题吗?

find -maxdepth 1 -name "lib*.*" -type "f"

答案1

正如评论中提到的,在 Unix 中,*.*表示文件名必须包含句点。如果您的文件名不包含句点,请使用-name "lib*"; 例如,

find . -maxdepth 1 -type f -name "lib*" -printf '%f\n'

答案2

只要我实际在目录中,您的示例就对我有用:

$ cd /lib
$ find -maxdepth 1 -name "lib*.*" -type "f"
./libthread_db-1.0.so
./libfreebl3.so
./libnsl-2.12.so
./libnss_compat-2.12.so
./libcidn-2.12.so
./libdl-2.12.so
./libnss_hesiod-2.12.so
./libresolv-2.12.so
./libz.so.1.2.3
./libm-2.12.so
./libanl-2.12.so
./libpthread-2.12.so
./libutil-2.12.so
./libnss_dns-2.12.so
./libnss_files-2.12.so
./libcrypt-2.12.so
./libBrokenLocale-2.12.so
./libfreebl3.chk
./libnss_nisplus-2.12.so
./libSegFault.so
./libc-2.12.so
./librt-2.12.so
./libnss_nis-2.12.so

我猜你是从另一个目录发出命令的。无论如何,更常见的做法是指定要用作起点的目录,例如:

find /lib -maxdepth 1 -name "lib*.*" -type "f"

正如其他人在评论中指出的那样,*.*这意味着文件名必须包含“。”(就像在包含库的目录中搜索时那样,它们很可能都包含一个点)。

相关内容