Меню сайта
   Главная   
   Обо мне   
   Статьи   
   Дневник   
   Картинки   
   Файлы   
   Форум   
   Гостевая книга   

Категории раздела
Куклы и игрушки [60]
Личное [116]
Музыка [19]
Общее [304]
Японский язык [12]
ZX Spectrum [70]
Субмарины [98]
Настольные игры [34]
Го (碁) [11]
Книги [16]
Япония [26]
Таро [4]
Запертый шкаф [17]
CSA (КША) [15]
GNU/Linux [134]
Ubuntu [103]
Manjaro Linux [39]
Python [3]
Магнитольное [44]
Commodore64 [14]
Игровые приставки [2]


 
Дневник (2018 » Июль » 9 в 03:07)
GNU/Linux find - поиск больших файлов и не только

find
Рекурсивный поиск из текущей папки больших файлов. С конвеерным форматированием вывода через awk. Точка - это место старта поиска - текущая папка,  +600M размер искомых файлов в Мб, начиная с которого они будут находиться. Можно указывать в k — килобайтах.  В awk я указал $10. На самом деле такой колонки нет, но если файлы содержат в имени пробел, часть за пробелом не будет утеряна. Правда если пробелов много, то от использования awk в конвеере вероятно лучше отказаться.

find . -type f -size +600M -exec ls -lh {} \; | awk '{ print $9 " " $10 ": " $5}'
Допустимые величины размера:
  • b – для 512-байтовых блоков (по умолчанию, если префикс не указан)
  • c – байты
  • w – двухбайтовые слова
  • k – килобайты (1024 байт)
  • M – мегабайты (1048576 байт)
  • G – гигабайты (1073741824 байт)
Пути поиска:
  • /  (слеш) корень root
  • ~  (тильда) домашний каталог
  • .  (точка) текущий каталог

Чтобы найти только директории
find . -type d
Чтобы найти только файлы, а не директории
find . -type f
Найти файл по имени в хомяке:
find ~ -name ".bashrc"
Поддерживаются маски. Например найти все файлы, начинающиеся с точки:
find ~ -name ".*"
Для поиска можно указывать сразу несколько мест:
find /opt ~ -name ".*"
Поиск без учета регистра с помощью -iname
find ~ -iname ".bashrc"
Найти все файлы отличные от определенного типа файлов.
find ~ -not -name "*.txt"
Поиск сразу нескольких типов файлов, и .txt и .html, используя Regular Expressions
find . -regex ".*\.\(txt\|html\)$"
Поиск файлов используя условие ИЛИ (OR)
find . -name "*.txt" -o -name ".*"
Найти файлы с определенным доступом используя -perm
find . -type f -perm 0777
Найти  все исполняемые файлы
find . -perm /a=x
Найти файлы с доступом только для чтения
find /root -perm /u=r
Найти все файлы пользователя по его имени
find . -user username
Найти файлы, изменённые 7  дней назад
find . -mtime 7
Найти файлы, в которые входили 8 дней назад
find ~ -atime 8

Поиск всех пустых файлов
find / -type f -empty
Поиск трёх самых БОЛЬШИХ файлов:
find . -type f -exec ls -s {} \; | sort -n -r | head -3
Поиск трёх самых маленьких  файлов:
find . -type f -exec ls -s {} \; | sort -n | head -3

Вывести в текущей папке файлы между двумя датами:
find . -mindepth 1 -newermt '2011-03-29 00:00' ! -newermt '2011-03-30 23:59' -print


НАЙТИ  И ЗАМЕНИТЬ

Просто рекурсивно найти файл по фрагменту содержимого, исключая не текстовые типы:
find . -type f -not -regex ".*\.\(JPG\|jpg\|jpeg\|gif\|pdf\|mov\)$" \
 -exec egrep -iH  'искать_это|или_то' {} \;

Найти все файлыс правами 644 и заменить их на 777
find . -type f -perm 644 -print -exec chmod 777 {} \;
Найти и УДАЛИТЬ файлы, подходящие по определенным критериям:
find . -type f -name '*.back' -exec rm -f {} \;

Замена слов в скриптах:
find -name '*.php' -exec sed -i -e s/было/стало/g {} \;


Источник:
Категория: GNU/Linux | Просмотров: 647 | Добавил: harushima | Рейтинг: 0.0/0 |
Всего комментариев: 8.

17.08.2021 10:54
1 harushima
0  
Скопировать из источника картинки за заданный период:

find ~/Изображения/smplayer_screenshots/ -mindepth 1 -newermt '2021-07-01 00:00' ! -newermt '2021-07-31 23:59' -exec cp {} /tmp/scr \;


01.06.2022 23:27
2 harushima
0  
Скопировать из разных подкаталогов все файлы в один.
find . -iname *.scr -exec cp {} ./dirname \;


04.09.2022 12:58
3 harushima
0  
Найти и скопировать в:

p=~/Изображения/smplayer_screenshots/ ; find $p -iname "*электрон*" -exec cp {} $p"tmpcopy/" \;


22.02.2023 06:00
4 harushima
0  
Передать найденное имя БЕЗ расширения внешней утилите:

find -type f -iname '*.7z' -exec sh -c '7z x "$1" -o"${1%.7z}"' sh {} \;


25.03.2024 00:49
5 harushima
0  
Искать тут и не искать воон там:
find /usr/ -iname flag.png -not -path '*/usr/share/kf5/*' -print
https://ru.linux-console.net/?p=13144


13.04.2024 02:10
6 harushima
0  
Искать все файлы, кроме:

find "/.../Music/A-Z-А-Я/" -type f -not -regex ".*\.\(mp3\|MP3\|jpeg\|txt\|gif\|JPG\|jpg\|m3u\|txt\|ini\|rtf\|pdf\)$"


14.04.2024 07:43
7 harushima
0  
Чтобы избежать проблем с именами файлов, которые содержат пробелы, нужно использовать опцию -print0, которая заставит find выводить имя файла с нулевым символом в конце. Этот вывод может быть правильно интерпретирован xargs с помощью опции -0 или --null.

https://tokmakov.msk.ru/blog/item/724


17.04.2024 08:27
8 harushima
0  
find . -name '*' -exec printf '%s %s %s \n' {} +

вывод результата в несколько пунктов в строке

В целях защиты от спама, добавлять комментарии могут только зарегистрированные пользователи. Если Вы не хотите регистрироваться под своим именем, войдите под логином: anonymous, паролем: anonymous.   ( Регистрация,   Вход).
Авторизация
Анонимный вход:
anonymous / anonymous
Логин:
Пароль:

Календарь
«  Июль 2018  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
3031

Поиск

Облако тэгов
JGSDF игрушки Брюнетки Кладбище сайты Ярость Дракулы Древний Египет девушки кошки Cthulhu Вампиры Kitsune Ужас Аркхема инструмент комиксы Lovecraft готика Submarine submarine rc toy Hosting игротека Ужас Аркхэма book uboat мобильная связь го Edgar Poe swf Mansions of Madness Nightmares персоны Synergy linux-hardware bash youtube Storages Python Мастер-рукожоп Магнитофоны Entropy Grub2 loglevel WiFi Beeline ОПСОСЫ sharp939 Аудиокассеты Windows linuxwork Хочуны ImageMagick топБарыг C64c Commodore

Статистика
Яндекс.Метрика
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Page QR code


Перепечатка материалов сайта без активной ссылки запрещена. Следить за RSS
(c) hermitlair.ucoz.com 2009-2024
Лучший браузер!
Блокировка рекламы