Текст и файлы
Поиск в консоли в текстовых документах по содержимому
find . -name "*.doc" | while read i; do catdoc "$i" | grep -Hi --label="$i" -n "что_ищем"; done
или, используя утилиту antiword для чтения doc файлов
find . -name "*.doc" | while read i; do antiword "$i" | grep -H --label="$i" -n "что_ищем"; done
Поиск по документам OpenOffice Writer и LibreOffice Writer начиная с текущего каталога используя утилиту odt2txt для чтения odt файлов
find . -name "*.odt" | while read i; do odt2txt "$i" | grep -H --label="$i" -n "что_ищем"; done
Поиск по текстовым PDF файлам (не будет работать с файлами созданными из графических форматов, например отсканированные книни без текстового слоя):
find . -name '*.pdf' -exec pdftotext {} - \; | grep "что_ищем"
После работы однострочника выдается путь к файлу и номер строки с искомой фразой.
Прочитать документ можно так:
antiword "имя файла" | less
odt2txt "имя файла" | less
в less по "/" работает поиск.
также есть pdfgrep
xls2csv -s windows-1251 -d utf-8 name.xls - конвертировать xls в csv
*********************************************************************************************
мусор при сортировке мыла
"(admin|support|satu|*.png|facebook|@market.kz|Rating@Mail.ru|webmaster|no_reply|web@|pentagon)"
мусор при сортировке сайтов
egrep -v 'orgpage|static|ajax|yandex|addthis|schema|data-vocabulary|ogp\.|vk\.com|facebook|\.ru$|\.ru\.|\.me$|youtube|puzzleservice|damu|\.gov\.|wix\.com$|hotmail|shumgam|tomas|translations'
*********************************************************************************************
Поменять регистр текста в текстовых файлах
Все буквы будут большими:
sed -i 's/.*/\U&/' *.txt
Все буквы будут маленькими:
sed -i 's/.*/\L&/' *.txt
Поиск и удаление файлов
find -name "что_ищем" -type f -exec rm {} \; - поиск и удаление всех что_ищем в текущем каталоге
find -name "*.ht*" -exec cat {} \; -type f > file - объединить все файлы в file
find -name "*.ht*" -exec egrep -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" {} \; -type f - поиск мыла
find -name "*.ht*" -exec egrep -o "(+[ +][7-8][ (][() 0-9-]{3,17})" {} \; -type f - поиск телефонов
egrep "([ +][78]+[ (]+[() 0-9-]{3,17})|([ +]+[0-9()]{11,13})"
Поиск дубликатов файлов:
find ./ -type f | xargs -d\\n md5sum | sort | uniq -D -w 32 >duplicates.txt
Windows
del e:\forall\*.gpg /s удаление файлов по маске в катлоге + вложенные
del e:\forall\*.vault /s
Сравнить содержимое двух каталогов
diff -urN dir1 dir2 > out.diff
после этого смотреть получившийся файл c подсветкой синтаксиса
mc -e out.diff
Объединение файлов командой cat
cat file1 file2 > file12
Удаление строки из файла
sed -i "/выкидыш/d" file
Вывод начиная со строки номер M, заканчивая строкой номер N.
sed -n M,Np FILENAME
Сортировка в файле sort file1 > file2
Найти и удалить дубликаты строк в файле uniq myfile1.txt > myfile2.txt
Перемешать файл sort file1 > file2 -R
comm -- выбрать или отбросить строки, общие для двух файлов
comm -23 1.txt 2.txt - вывод уникальных строк из 1.txt
СИНТАКСИС comm [-123i] файл1 файл2
ОПИСАНИЕ Утилита comm читает файл1 и файл2, которые должны быть предварительно лексически отсортированы, и генерирует вывод, состоящий из трех колонок текста: строки, найденные только в файле файл1; строки, найденные только в файле файл2; и строки, общие для обоих файлов.
Имя файла ``-'' означает стандартный ввод. Имеются следующие опции:
-1 Подавить вывод первой колонки.
-2 Подавить вывод второй колонки.
-3 Подавить вывод третьей колонки.
-i Нечувствительное к регистру сравнение строк.
Перед каждой колонкой будет напечатано столько символов табуляции, сколько печатается колонок с меньшими номерами. Например, если вывод второй колонки подавляется, то перед строками, печатаемыми в первой колонке, символов табуляции не будет совсем, а перед строками в третьей колонке будет напечатан один символ табуляции. Утилита comm предполагает, что файлы были предварительно лексически отсортированы; все символы участвуют в сравнении строк.
разница между файлами (долго работает на больших файлах)
grep -F -v -f 2.txt 1.txt
fgrep -v -f file2.txt file1.txt >результат.txt
-F Задает сопоставление с фиксированными строками. Каждый образец ищется как строка, а не как регулярное выражение. Если входная строка содержит любой из образцов в качестве подряд идущих байтов, такая строка считается соответствующей образцу. Пустая строка-образец соответствует любой строке.
-v Выдает все строки, за исключением содержащих образец
-f -f файл_образцов Читает один или несколько образцов из файла с указанным полным именем файл_образцов. Образцы в файле_образцов завершаются символом новой строки. Пустой образец можно задать с помощью пустой строки в файле_образцов. Если только вместе с этой опцией не указана опция -E или -F, каждый образец счиается простым регулярным выражением.
egrep -v "([</#=a-zA-Z&\';>])" удаление служебных текстов из HTML
\d?[-. ]?\(?(\d{3})\)?[-. ]?(\d{3})[-.]?(\d{2})[-.]?(\d{2})
cat 1.txt | grep -v -f 2.txt 1>3.txt
Найти email адреса в файле с помощью grep
$ egrep -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file
egrep -o "\w+@\w+\.\w+" file
Найти сайты в файле с помощью grep
find -name "*.ht*" -exec egrep -o "http://+[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" {} \; -type f
Поиск телефонов
egrep -o "(+[ +][7-8][ (][() 0-9-]{3,17})" file
egrep "([ +][78]+[ (]+[() 0-9-]{3,17})|([ +]+[0-9()]{11,13})" file
Опция Описание
-E, --extended-regexp Использовать расширенное регулярное выражение
-o, --only-matching Печать только самих email адресов
Удаление старых файлов одной командой в Linux
Удобно помещать такую команду в cron.
Например, для файлов старше 5 дней:
find /path/to/files* -mtime +5 -exec rm {} \;
Для файлов, измененных в пределах 24...48 часов:
find /path/to/files* -mtime 1 -exec rm {} \;
Это версия для Debian, на RHEL надо писать чуть по-другому:
find /path/to/files* -mtime +0 -exec rm {} \;
Создать файлы для тестирования можно командой (например, дата 2 апреля):
touch -d '2 Apr' /path/to/test_file