Комбинация команд find и grep с опцией exec

[119304] Согласно [119743] этой ссылке[119744]:

"[...] это ограничение на то, как работает Х. Клиент, или "окно", имеет конкретную позицию x/y и экран - это ..."

Так что, к сожалению, это, по-видимому, невозможно...[119309]

1
08.10.2015, 02:23
3 ответа
find /lib* ! -type d -name \*lib\* | cut -d. -f1 | sort -u

Таким образом, приведенная выше команда должна работать для имен файлов, не содержащих новых строк, в противном случае вам нужно будет сделать несколько более явных тестов. Как написано, эта команда находит файл с именем, которое соответствует \*lib\* glob и делает это на любой глубине - она будет рекурсивно искать все дочерние каталоги базовых деревьев, возвращаемых /lib*/ glob.

find просто печатает свой вывод - вот что он делает. Однако, когда вы -exec другую команду, она передает имена файлов в качестве аргументов этой команды, и поэтому вы не grep файл names, а файл contents в вашей команде.

Итак, здесь мы разбираем вывод find в конвейере. cut будет печатать до первого периода, который он найдет в любой из своих входных строк, а sort возьмет эти результаты и сожмет любые повторы до одной ничной записи.

1
27.01.2020, 23:27

Похоже, вам нужны только имена файлов без каких-либо расширений. Если вы ищете единственную трубу, чтобы выбить это, grep не ваш мужчина. Попробуйте sed :

$ find /lib /lib64 -type f -name '*lib*' | sed 's@/.*/@@;s@\..*$@@'

Вы можете передать по конвейеру sort -u , чтобы удалить любые дубликаты.Приведенная ниже команда будет более точной, если использовать awk и cut (или снова awk - либо / или - cut короче / prettier, IMHO):

$ find /lib /lib64 -type f -name '*lib*' | awk -F '/' '{print $NF}' | cut -d. -f1 | sort -u

Возвращает:

20-libgphoto2-6 40-libsane klibc-P2s_k-gf23VtrGgO2_4pGkQgwMY libBrokenLocale-2 libSegFault libacl libaio libanl-2 libatasmart libattr libaudit libblkid libbsd libbz2 libc-2 libcap libcgmanager libcidn-2 libcom_err libcrypt-2 { {1}} libcrypto libdbus-1 libdevmapper libdl-2 libe2p libexpat libext2fs . libfuse libgcc_s libgcrypt libglib-2 libgpg-error libhistory libjson-c libkeyutils { {1}} libkmod liblzma liblzo2 libm-2 libmemusage libmount libncurses libncursesw { {1}} libnewt libnih libnih-dbus libnsl-2 libnss_compat-2 libnss_dns-2 libnss_files- 2 libnss_hesiod-2 libnss_nis-2 libnss_nisplus-2 {{1} } libntfs-3g libpam libpam_misc libpamc libparted libpci libpcprofile libpcre {{1} } libpcsclite libply libply-boot-client libply-splash-core libply-splash-graphics libpng12 libpopt libprocps libpthread-2 libreadline libresolv-2 librt-2 libselinux libsepol {{ 1}} libslang libss libssl libsystemd-daemon libsystemd-login libthread_db-1 libtinfo {{1}). } libudev libulockmgr libusb-0 libusb-1 libutil-2 libuuid libwrap libz

В противном случае вам не понадобится канал для вырезать , чтобы удалить все расширения:

$ find /lib /lib64 -type f -name '*lib*' | awk -F '/' '{print $NF}' | sort -u

Возвращает:

20-libgphoto2-6.hwdb 40-libsane.rules klibc-P2s_k-gf23VtrGgO2_4pGkQgwMY.so libBrokenLocale-2.19.so libSegFault.so libacl.so.1.1.0 libaio.so .1.0.1 libanl-2.19.so libatasmart.so.4.0.5 libattr.so.1.1.0 libaudit.so.1.0.0 libblkid.so.1.1.0 libbsd.so.0.6.0 libbz2.so.1.0.4 libc-2.19.so {{1} } libcap. so.2.24 libcgmanager.so.00 libcidn-2.19.so libcom_err.so.2.1 libcrypt-2.19.so libcrypto.so.1.0.0 libdbus- 1.so.3.7.6 libdevmapper.so.1.02.1 libdl-2.19.so libe2p.so.2.3 libexpat.so.1.6. 0 libext2fs.so.2.4 libfuse.so.2.9.2 libgcc_s.so.1 libgcrypt.so.11.8.2 libglib-2.0.so.0.4000.0 libgpg-error.so.0.10.0 libhistory.so.6.3 libjson-c.so.2.0.0 {{1 }} libkeyutils.so.1.4 libkmod.so.2.2.5 liblzma.so.5.0.0 liblzo2.so.2.0.0 libm- 2.19.so libmemusage.so libmount.so.1.1.0 libncurses.so.5.9 libncursesw.so.5.9 libnewt. so.0.52.15 libnih-dbus.so.1.0.0 libnih.so.1.0.0 libnsl-2.19.so libnss_compat-2.19. поэтому libnss_dns-2.19.so libnss_files-2.19.so libnss_hesiod-2.19.so libnss_nis-2.19.so libnss_nisplus-2.19. поэтому libntfs-3g.so.841.0.0 libpam.so.0.83.1 libpam_misc.so.0.82.0 libpamc.so.0.82. 1 libparted.so.0.0.1 libpci.so.3.2.1 libpcprofile.so libpcre.so.3.13.1 libpcsclit e.so.1.0.0 libply-boot-client.so.2.1.0 libply-splash-core.so.2.1.0 libply-splash-graphics. so.2.1.0 libply.so.2.1.0 libpng12.so.0.50.0 libpopt.so.0.0.0 libprocps.so. 3.0.0 libpthread-2.19.so libreadline.so.6.3 libresolv-2.19.so librt-2.19.so libselinux. so.1 libsepol.so.1 libslang.so.2.2.4 libss.so.2.0 libssl.so.1.0.0 {{1 }} libsystemd-daemon.so.0.0.10 libsystemd-login.so.0.7.1 libthread_db-1.0.so libtinfo.so.5.9 libudev.so.1.3.5 libulockmgr.so.1.0.1 libusb-0.1.so.4.4.4 libusb-1.0.so.0.1.0 {{1 }} libutil-2.19.so libuuid.so.1.3.0 libwrap.so.0.7.6 libz.so.1.2.8

1
27.01.2020, 23:27
find /lib /lib64 -name '*lib*' -type f | sed 's/\(.*\)\..*/\1/' | xargs -n 1 basename | sort -u

Найти все файлы в каталогах lib. Снимите все, что было после последнего периода. Передайте список в basename, чтобы удалить имя каталога. Сортируйте и удаляйте дубликаты.

1
27.01.2020, 23:27

Теги

Похожие вопросы