Я хочу искать файлы в текущем каталоге, начиная с "lib". Я хочу устранить подкаталоги.
Я пытаюсь выполнить следующую команду, но она не дает никаких файлов. Что-то не так в следующей команде?
find -maxdepth 1 -name "lib*.*" -type "f"
Я хочу искать файлы в текущем каталоге, начиная с "lib". Я хочу устранить подкаталоги.
Я пытаюсь выполнить следующую команду, но она не дает никаких файлов. Что-то не так в следующей команде?
find -maxdepth 1 -name "lib*.*" -type "f"
Как упоминалось в комментарии, в Unix *.*
Означает, что имя файла должно содержать точку.
Если имена ваших файлов не содержат точек, используйте -name "lib*"
; например,
find . -maxdepth 1 -type f -name "lib*" -printf '%f\n'
Ваш пример работает для меня, пока я на самом деле в каталоге:
$ 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"
Также, как другие отметили в комментариях, *.*
Означает, что имя файла должно содержать «.» (как это происходит, если поиск в каталоге, содержащем библиотеки, скорее всего, они все будут содержать точку).