кодесурса
«Linux

Linux Основные инструменты Unix

script1adsense2code
script1adsense3code

Вступление

В этом сеансе мы представили команды для поиска, поиска файлов и сжатия файлов вместе с другими распространенными инструментами, которые ранее не обсуждались. Хотя обсуждаемые здесь инструменты технически не считаются фильтрами, их можно использовать в трубах.

находить

Команда find может быть очень полезна при запуске канала для поиска файлов. Возможно, вы захотите добавить 2> / dev / null в командные строки, чтобы избежать загромождения экрана сообщениями об ошибках. Вот несколько примеров.

Найдите все файлы в / etc и поместите список в etcfiles.txt

find /etc > etcfiles.txt

Результат показан ниже.

 datasoft @ datasoft-linux ~ $ cat etcfiles.txt | Больше
/так далее
/ И т.д. / ч
/etc/pm/sleep.d
/etc/pm/sleep.d/10_grub-common
/etc/pm/sleep.d/10_unattended-upgrades-hibernate
/etc/pm/sleep.d/novatel_3g_suspend
/etc/pm/power.d
/etc/pm/config.d
/etc/mtab.fuselock
/ И т.д. / л.с.
/etc/hp/hplip.conf
/ И т.д. / ядро
/etc/kernel/postrm.d
/etc/kernel/postrm.d/initramfs-tools
/etc/kernel/postrm.d/zz-update-grub
/etc/kernel/postinst.d
/etc/kernel/postinst.d/initramfs-tools
/etc/kernel/postinst.d/update-notifier
/etc/kernel/postinst.d/apt-auto-removal
/etc/kernel/postinst.d/zz-update-grub
/etc/kernel/postinst.d/pm-utils
/ И т.д. / insserv
/ и т.д. / insserv / переопределяет
--Больше--

Найдите все файлы всей системы и поместите список в allfiles.txt.

find / > allfiles.txt

Найдите файлы, которые заканчиваются на .conf в текущем каталоге (и всех его подкаталогах).

find . -name "*.conf"

Результат показан ниже

 datasoft @ datasoft-linux / $ find. имя "* .conf" | Больше
найти: `./proc/37/map_files ': в доступе отказано
найти: `./proc/37/fdinfo ': в доступе отказано
найти: `./proc/37/ns ': в доступе отказано
найти: `./proc/49/task/49/fd ': в доступе отказано
найти: `./proc/49/task/49/fdinfo ': в доступе отказано
найти: `./proc/49/task/49/ns ': в доступе отказано
найти: `./proc/49/fd ': в доступе отказано
найти: `./proc/49/map_files ': в доступе отказано
найти: `./proc/49/fdinfo ': в доступе отказано
найти: `./proc/49/ns ': в доступе отказано
найти: `./proc/52/task/52/fd ': в доступе отказано
найти: `./proc/52/task/52/fdinfo ': в доступе отказано
найти: `./proc/52/task/52/ns ': в доступе отказано
найти: `./proc/52/fd ': в доступе отказано
найти: `./proc/52/map_files ': в доступе отказано
найти: `./proc/52/fdinfo ': в доступе отказано
найти: `./proc/52/ns ': в доступе отказано
найти: `./proc/53/task/53/fd ': в доступе отказано
найти: `./proc/53/task/53/fdinfo ': в доступе отказано
найти: `./proc/53/task/53/ns ': в доступе отказано
найти: `./proc/53/fd ': в доступе отказано
найти: `./proc/53/map_files ': в доступе отказано
найти: `./proc/53/fdinfo ': в доступе отказано
найти: `./proc/53/ns ': в доступе отказано
...

Найдите файлы типа file (не каталог, труба и т. Д.), Заканчивающиеся на .conf.

find . -type f -name "*.conf"

Результат показан ниже

 datasoft @ datasoft-linux / $ find. имя "* .conf" | Больше
найти: `./proc/37/map_files ': в доступе отказано
найти: `./proc/37/fdinfo ': в доступе отказано
найти: `./proc/37/ns ': в доступе отказано
найти: `./proc/49/task/49/fd ': в доступе отказано
найти: `./proc/49/task/49/fdinfo ': в доступе отказано
найти: `./proc/49/task/49/ns ': в доступе отказано
найти: `./proc/49/fd ': в доступе отказано
найти: `./proc/49/map_files ': в доступе отказано
найти: `./proc/49/fdinfo ': в доступе отказано
найти: `./proc/49/ns ': в доступе отказано
...

Найдите файлы каталога типа, которые заканчиваются на .bak.

find /data -type d -name "*.bak"

Результат показан ниже

 datasoft @ datasoft-linux / $ find / data -type d -name "* .bak" | Больше
find: `/ data ': нет такого файла или каталога

Найти файлы, которые новее, чем file42.txt

find . -newer file42.txt

Результат показан ниже

 datasoft @ datasoft-linux / $ find. -новый файл42.txt | Больше
найти: `file42.txt ': нет такого файла или каталога

Find также может выполнить другую команду для каждого найденного файла. Этот пример ищет файлы * .odf и копирует их в / backup /.

Find также может выполнить после вашего подтверждения еще одну команду для каждого найденного файла. В этом примере будут удалены файлы * .odf, если вы подтвердите его для каждого найденного файла.

find /data -name "*.odf" -exec cp {} /backup/ \;

datasoft @ datasoft-linux / $ find / data -name "* .odf" -exec cp {} / backup /; | найти: `/ data ': нет такого файла или каталога

разместить

Инструмент locate сильно отличается от find тем, что для поиска файлов используется индекс. Это намного быстрее, чем обход всех каталогов, но это также означает, что он всегда устарел. Если индекс еще не существует, его необходимо создать (как root в Red Hat Enterprise Linux) с помощью команды updatedb.

 datasoft @ datasoft-linux /$ locate samba | more
/etc/samba
/etc/apparmor.d/abstractions/samba
/etc/dhcp/dhclient-enter-hooks.d/samba
/etc/pam.d/samba
/etc/samba/gdbcommands
/etc/samba/smb.conf
/etc/samba/tls
/usr/bin/samba-regedit
/usr/bin/samba-tool
/usr/lib/samba
/usr/lib/2013.com.canonical.certification:checkbox/bin/samba_test
/usr/lib/i386-linux-gnu/libsamba-credentials.so.0
/usr/lib/i386-linux-gnu/libsamba-credentials.so.0.0.1
/usr/lib/i386-linux-gnu/libsamba-hostconfig.so.0
/usr/lib/i386-linux-gnu/libsamba-hostconfig.so.0.0.1
/usr/lib/i386-linux-gnu/libsamba-policy.so.0
/usr/lib/i386-linux-gnu/libsamba-policy.so.0.0.1
/usr/lib/i386-linux-gnu/libsamba-util.so.0
/usr/lib/i386-linux-gnu/libsamba-util.so.0.0.1
/usr/lib/i386-linux-gnu/samba
/usr/lib/i386-linux-gnu/samba/auth
/usr/lib/i386-linux-gnu/samba/bind9
/usr/lib/i386-linux-gnu/samba/gensec
--More--

Большинство дистрибутивов Linux будут запускать updatedb один раз в день.

спать

Команда sleep используется для приостановки выполнения по меньшей мере на целое число секунд, указанное операндом времени. Следующий пример показывает шесть секунд сна.

datasoft @ datasoft-linux /$ sleep 6
datasoft @ datasoft-linux /$ 

время

Команда time может отображать, сколько времени требуется для выполнения команды. В следующем примере выполнение команды date занимает совсем немного времени.

 datasoft @ datasoft-linux / $ time date
Вт 5 авг 17:22:56 IST 2014
реальный 0m0.001s
пользователь 0m0.000s
sys 0m0.000s

В следующем примере команда sleep 5 выполняется пять реальных секунд, но потребляет немного времени процессора.

datasoft @ datasoft-linux /$ time sleep 5
real	0m5.001s
user	0m0.000s
sys	0m0.000s

Эта команда bzip2 сжимает файл и использует много процессорного времени.

datasoft @ datasoft-linux /$ time bzip2 text.txt
real	0m0.021s
user	0m0.000s
sys	0m0.000s

GZIP

Команда gzip используется для уменьшения размера именованных файлов с использованием кодировки Lempel-Ziv (LZ77).

datasoft @ datasoft-linux ~$ ls -lh temp.txt
-rw-rw-r-- 1 datasoft datasoft 22 Aug  2 14:36 temp.txt
 datasoft @ datasoft-linux ~$ gzip temp.txt
 datasoft @ datasoft-linux ~$ ls -lh temp.txt.gz
-rw-rw-r-- 1 datasoft datasoft 49 Aug  2 14:36 temp.txt.gz

Gunzip

Команда gunzip используется для возврата оригинального файла, который был сжат командой gzip

 datasoft @ datasoft-linux ~$ gunzip temp.txt.gz
 datasoft @ datasoft-linux ~$ ls -lh temp.txt
-rw-rw-r-- 1 datasoft datasoft 22 Aug  2 14:36 temp.txt

zcat - zmore

Текстовые файлы, сжатые с помощью gzip, можно просматривать с помощью zcat и zmore.

 datasoft @ datasoft-linux ~$ head -4 temp.txt
four
three 
two
 datasoft @ datasoft-linux ~$ gzip temp.txt
 datasoft @ datasoft-linux ~$ zcat temp.txt.gz | head -4
four
three 
two

bzip2

Команда bzip2 используется для уменьшения размера именованных файлов с использованием алгоритма сжатия текста с сортировкой блоков Burrows-Wheeler и кодированием Хаффмана.

datasoft @ datasoft-linux ~$ bzip2 temp.txt
 datasoft @ datasoft-linux ~$ ls -lh temp.txt.bz2
-rw-rw-r-- 1 datasoft datasoft 59 Aug  2 14:36 temp.txt.bz2

bunzip2

Файлы могут быть снова распакованы с помощью bunzip2.

datasoft @ datasoft-linux ~$ bunzip2 temp.txt.bz2
 datasoft @ datasoft-linux ~$ ls -lh temp.txt
-rw-rw-r-- 1 datasoft datasoft 22 Aug  2 14:36 temp.txt

bzcat - bzmore

Аналогичным образом, bzcat и bzmore могут отображать файлы, сжатые с помощью bzip2.

datasoft @ datasoft-linux ~$ bzip2 temp.txt
 datasoft @ datasoft-linux ~$ bzcat temp.txt.bz2 | head -4
four
three 
two

Упражнение, практика и решение:

1. Объясните разницу между этими двумя командами. Этот вопрос очень важен. Если вы не знаете ответ, оглянитесь на главу по оболочке.

find /data -name "*.txt"

find /data -name *.txt

Когда * .txt заключен в кавычки, оболочка не будет его трогать. Инструмент поиска будет искать в / data все файлы, оканчивающиеся на .txt. Когда * .txt не указан в кавычках, оболочка может расширить его (когда в текущем каталоге существует один или несколько файлов, оканчивающихся на .txt). Поиск может показать другой результат или может привести к синтаксической ошибке .;

2. Объясните разницу между этими двумя утверждениями. Будут ли они оба работать, когда в / data есть 200 .odf файлов? Как насчет того, когда есть 2 миллиона файлов .odf?

find /data -name "*.odf" > data_odf.txt

find /data/*.odf > data_odf.txt

Первый поиск выведет все имена файлов .odf в / data и все подкаталоги. Оболочка перенаправит это в файл. Второй поиск выведет все файлы с именем .odf в / data, а также выведет все файлы, которые существуют в каталогах с именем * .odf (в / data). С двумя миллионами файлов командная строка будет расширена сверх максимума, который может принять оболочка. Последняя часть командной строки будет потеряна.

3. Напишите команду find, которая находит все файлы, созданные после 30 января 2010 года.

Код:

>touch -t 201001302359 marker_date
find . -type f -newer marker_date
There is another solution :
find . -type f -newerat "20100130 23:59:59"
 }

4. Напишите команду find, которая находит все файлы * .odf, созданные в сентябре 2009 года.

Код:

touch -t 200908312359 marker_start
touch -t 200910010000 marker_end
find . -type f -name "*.odf" -newer marker_start ! -newer marker_end
The exclamation mark ! -newer can be read as not newer.

5. Подсчитайте количество файлов * .conf в / etc и всех его подкаталогах.

Код:

find /etc -type f -name '*.conf' | wc -l

6. Две команды, которые делают одно и то же: скопируйте файлы * .odf в / backup /. Что было бы
причина заменить первую команду второй? Опять же, это важный вопрос.

 cp -r /data/*.odf / backup / 
find /data -name "*.odf" -exec cp {} /backup/ \;

cp -r /data/*.odf /backup/
find /data -name "*.odf" -exec cp {} /backup/ \;

Первый может дать сбой, если в одной командной строке слишком много файлов.

7. Создайте файл с именем loctest.txt. Можете ли вы найти этот файл с помощью locate? Почему бы и нет ? Как сделать так, чтобы найти этот файл?

Вы не можете найти это с помощью locate, потому что его еще нет в индексе. updatedb

8. Используйте find и -exec для переименования всех файлов .htm в .html.

datasoft @ datasoft-linux ~$ find . -name '*.htm'
./one.htm
./two.htm
datasoft @ datasoft-linux ~$ find . -name '*.htm' -exec mv {} {}l \;
datasoft @ datasoft-linux ~$ find . -name '*.htm*'
./one.html
./two.html

9. Введите команду date. Теперь отобразите дату в формате ГГГГ / ММ / ДД.

Код:

date +%Y/%m/%d

10. Введите команду cal. Покажите календарь 1582 и 1752. Заметили что-нибудь особенное?

Cal 1582
Календари разные в зависимости от страны. Проверьте http://linux-training.be/files/
studentfiles / dates.txt

Предыдущая: Linux - Фильтры
Далее: регулярные выражения Linux

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code