我想在当前目录中搜索以“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"
正如其他人在评论中指出的那样,*.*
这意味着文件名必须包含“。”(就像在包含库的目录中搜索时那样,它们很可能都包含一个点)。