Bash, препарируем путь до файла

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

Вот у нас есть файл

[user@ora6 ~]$ ls -l  /tmp/project/Геофизическая\ изученность/Таблица\ изученности\ геофизическая.doc

получить путь до файла

[user@ora6 ~]$ dirname '/tmp/project/Геофизическая изученность/Таблица изученности геофизическая.doc'
/tmp/project/Геофизическая изученность

получить имя файла

[user@ora6 ~]$ basename '/tmp/project/Геофизическая изученность/Таблица изученности геофизическая.doc'
Таблица изученности геофизическая.doc

А если вам необходимо получить, к примеру, третью папку пути, то на помощь изящно приходит awk

[user@ora6 ~]$ echo /tmp/project/Геофизическая изученность/Таблица изученности геофизическая.doc | awk -F '/' '{print $4}'
Геофизическая изученность

На этом урок для начинающих закончен 🙂

Bash, файлы, пробелы, скобки и прочее…

Привет,

Данная статья более пригодиться начинающим скриптоводам, т.к. незнание этого заставляет делать их ужасные вещи 🙂  По специфике работы мне частно, даже очень часто, приходится парсить много текстовой информации — логи, файлы.
И если в имени файла есть пробел, скобки и что-то еще банальный цикл по массиву таких строк падает и рушит всю вашу задумку.
Читать далее

zip, русские имена файлов, linux

Распаковать zip, содержащий файлы с русскими буквами в именах и созданный в windows. Выполните последовательно 2 команды

convmv --notest -r -f cp-1252 -t cp-850 /path/to/unzipped/files
convmv --notest -r -f cp-866 -t utf-8 /path/to/unzipped/files

Первая запись, тестовая

Буквально сейчас понадобилось создать огромный массив вложенных директорий, имена которых содержат пробелы. Решается очень просто, благодаря xargs

cat folderlist_with_spaces.txt | sort -u | xargs -d '\n' mkdir -p

на этом тестовая запись окончена