Продолжаем Тему основных операций с файлами и папками.
КОМАНДА FILE
Команда определяет тип файла. Перейдем в папку Folder.
cd folder
Попробуем определить тип файла file yandex.url, как мы можем убедится команда выдает, что данный файл является текстовым.
Если мы наберем, например, File *, то команда применится ко всем файлам в текущей директории и определит все типы файлов.
Важной частью работы с файлами и папками являются Групповые Символы.
- * - все что угодно (заменяет любое количество символов)
- ? – любой символ (одиночный символ, ?? – два символа)
- ! – не (отрицание)
- [ac] – a или с
- [a-c] – a,b,c
Создал несколько новых файлов:
touch bag.txt
touch bat.txt
touch cat.txt
touch sat.txt
ls * - дает занимательную картинку, где видны файлы и папки.
Команда ls *.* нам покажет только те файлы которые имеют расширения. Первая звездочка, означает любое имя, вторая звездочка указывает на любое расширение. Мы можем указать на конкретное количество символов обозначив их знаками “?”. Например, ls *.??? – это означает, что подходят любые файлы, у которых расширение из 3-х любых символов. Знаки вопросов и звездочек, можно использовать с сочетаниями букв и других символов. Можно сказать, покажи нам все файлы, которые начинаются с букв a или b, команда ls [ab]*.
Также можно использовать конструкцию ls [a-m]*. Следовательно, работают все конструкции с групповыми символами.
КОМАНДА FIND
Данная команда будет осуществлять поиск файлов по иерархической структуре папок.
Попробуем найти в директории все файлы:
find *
Получим вот такой ответ на данную команду. У данной команды очень много ключей. Можем для примера взять такую конструкцию find . –name “In*” . Данная конструкция обозначает поиск в текущей папке, по имени, которое начинается с In и имеет в имени любое количество символов. Данную команду можно использовать для поиска файлов например по размеру: find . –size +5M . Следовательно, данным запросом мы ищем все файлы в текущем каталоге с размером более 5 MB.
КОМАНДА CPIO
Работа с архивами очень важная часть операций с файлами. Для того, чтобы разобраться в данном вопросе рассмотрим следующую команду.
Данная команда позволяет копировать файлы в архивы и из архивов. Данная команда позволяет работать с архивами, грубо говоря это двоичный архиватор. Смотрим, что есть в директории ls.
Далее даем вот такую команду: ls | cpio –o > ../test.cpio
В результате получили файл
Пояснения, что мы сделали. Мы взяли вывод команды ls по конвейеру передали на вход команды cpio с ключем –o, который создает архив и то, что должно получится мы указали папку .. т.е родительская директория и файл test.cpio. Команда выполнилась и вывела число блоков, сколько обработалось. И переместившись на уровень выше, в родительскую директорию мы можем увидеть, что файл появился.
А можем сделать следующую вещь: find . –name ”*.txt” | cpio –o > test2.cpio. Т.е мы можем выполнит поиск всех текстовых файлов в текущей директории и заархивировать, причем положить в текущую директорию.
Создадим папку mkdir extract. И перейдем в нее cd /root/extract. Теперь мы попробуем разархивировать cpio –id < .. / test2.cpio
Как мы видим все текстовые файлы появились. По сути, что мы сделали. Мы сказали команде cpio подняться на уровень выше взять test2.cpio и разархивировать в текущий каталог. Как видите там же попался каталог folder2, а попался т.к в нем тоже есть текстовые файлы. Напоминаю, что команда find работает так же со вложенными файлами, поэтому данный каталог и попал в архив.