Как да използвам командата Linux find за намиране на файлове

В този пост ще разгледаме Linux find команда и как да търсите и намирате файлове с различни атрибути.



Linux find Command

Linux find command е вграден мощен инструмент, който може да се използва за намиране и управление на файлове и директории въз основа на широк спектър от критерии за търсене.

Например, можем да намерим файлове по тяхното име, разширение, размер, разрешения и др. Можем също да използваме find команда за търсене на определен текст във файл, на който не знаем името.


Нека да видим как се използва find команда с примери:

Търсене на файл по име

Ако знаете името на файл, но не можете да си спомните директорията, в която се намира, можете да използвате следната команда от главната директория:


find . -name sales.csv

Примерен изход:

./accounts/sales.csv

Търсене на конкретен файл в директория

Ако искате да търсите конкретни файлове в дадена директория, можем да използваме:

find ./test -name testCases*

Примерен изход:

./test/testCases10.txt ./test/testCasesPassed.txt ./test/testCasesFailed.log

В горния случай търсим само в директорията „./test“.


Намерете файлове по разширение

За търсене и намиране на файлове с определено разширение използваме:

find . -name *.jpg

Примерен изход:

./test/results/failedTests.jpg ./test/project.jpg ./home/profile_pic.jpg ./tmp/cute-cats.jpg

Намерете файлове или директории с определени имена

За да намерим само файлове, трябва да използваме -f опция:

find ./ -type f -name 'results*'

Примерен изход:


./test/results_latest.log ./test/results_archive.pdf

За да намерим само директории, трябва да използваме -d опция:

find ./ -type d -name 'results*'

Примерен изход:

./test/results

Намерете файлове в множество директории

Ако искате да търсите и изброявате всички файлове с дадено име в множество директории, можете или да започнете търсенето в основната папка, или ако познавате директориите, можете да ги посочите.

Пример:


find ./test ./logs -name failed*.* -type f

Примерен изход:

./test/failed_tests.txt ./logs/failed_tests.log

Намерете файлове, съдържащи определен текст

Понякога искате да намерите файл и не знаете името му, но знаете, че в него има определен текст.

Можеш да използваш:

find ./test -type f -exec grep -l -i 'login_scenarios' {} ;

Тук, -i опцията се използва за игнориране на регистъра, така че Login_Scenarios и login_scenarios ще бъдат намерени.


Намерете файлове по размер

Можем дори да намираме файлове с различни размери. Опциите за размер са:

  • c байта
  • k килобайта
  • M Мегабайта
  • G Гигабайта

Например за намиране на файлове с точен размер, който използваме:

find / -size 10M

И за да намерим файлове, които са по-големи от определен размер, използваме:

find ./test -size +2M

Горното ще намери всички файлове, които са по-големи от 2 MB в папката ./test.

Намерете и изтрийте конкретни файлове

За да намерим и изтрием конкретни файлове, които използваме:

find . -type f -name 'temp*' -exec rm {} ;

Заключение

В тази статия научихте как да използвате командата linux find за търсене на файлове въз основа на име, разширение, размер и тип.