Как да търсим файлове в Линукс
Най-лесния начин да търсим файлове в Линукс е с програмата locate. Когато пуснете за пръв път програмата може да ви изпише съобщение за грешка. Проблема е че е нужна база с всички файлове на на компютъра за да може locate да ви покаже резултат. Съобщението за грешка ще би подкани да се логнете като root и да изпълните определена команда. След това програмата би трябвало да работи.
Има няколко начина по които може да ползваме приложението.
$ locate index.html
Това ще разпечата списък с всички файлове, в името на които има index.html. Примерни резултати биха били :
/home/pamela/index.html
/usr/local/games/pam/index.html
Може да използвате -q опцията за да подтиснете съобщенията за грешки. Съобщения за грешки, които може да срещнете, са например, че нямате достъп до файловете понеже не сте логнати с потребител root. Освен това -q опцията ще подтисне всякакви други съобщения за грешки.
$ locate „*.dat“ -q
Може да използвате -n опцията за да укажете колко резултата да показва програмата.
$ locate „*.c“ -n 10
Това ще покаже само първите 10 файла, на които имената завършват на .c.
Има още няколко параметъра, но те се ползват рядко и са описани в man страниците на програмата.
Как да търсим с ‘find’
Един от най-добрите начини за търсене на файлове в Линукс е с find. Тази програма има много параметри които може да се използват за да намерите точно това, което търсите.
Ако просто искате да знаете къде в файловата система се намира даден файл то тогава е по-добре да използвате locate.
Ето няколко начина, по които можете да ползвате find.
$ find / -name ‘program.c’
където :
/ – директорията, в която търсим
-name – с тази опция показваме, че търсим файлове
program.c – указваме файла, който търсим
$ find / -name ‘index*’
$ find / -iname ‘index*’
Първата команда ще намери файлове, които започват с index. Програмата ще започне да търси от директорията / и ще продължи във поддиректориите.
Втората кманда ще търси за същите файлове, но няма да бъде чувствителна към това дали са написани с малки или големи букви.
$ find -name met*
Тази команда ще търси за файлове, които започват с met в настоящата директория и всички нейни поддиректории. Понеже не е указана директория, се взима настоящата по подразбиране.
$ find /mp3collection -name ‘*.mp3′ -size -5000k
$ find / -size +10000k
Първата команда ще търси за всички файлове в директорията /mp3collection, които завършват на mp3 и са по малки от 5000 KB ( < 5MB)
Втората команда ще търси в / директорията и ще търси файлове, които са по-големи от 10000KB (> 10MB)
$ find /home/david -amin -10 -name ‘*.c’
$ find /home/david -atime -2 -name ‘*.c’
$ find /home/david -mmin -10 -name ‘*.c’
$ find /home/david -mtime -2 -name ‘*.c’
Първата команда търси за файлове в директорията /home/david и всички нейни поддиректории за файлове, които завършват на .c и върху които са били извършвани операции върху тях в последните 10 минути.
Втората команда търси за същите работи, но за файлове, върху които са извършван операции в последните 10 часа.
Третата и четвъртата команда отново търсят за същите файлове, но само ако тяхното съдържание е било променяно.
$ find / -mount -name ‘win*’
Тази команда връща файловете, които започват с ‘win’. Разликата е че ще се търсят само файлови системи,които не са маунтнати.
$ find /mp3-collection -name ‘Metallica*’ -and -size +10000k
$ find /mp3-collection -size +10000k ! -name „Metallica*“
$ find /mp3-collection -name ‘Metallica*’ -or -size +10000k
Булевите оператори като AND, OR или NOT правят find доста полезен инструмент.
Първата команда търси в директория /mp3-collection за файлове, започващи с ‘Metallica’ и са по-големи от 10000 килобайта (> 10 MB).
Втората команда търси в същата директория като по-горе, но за файлове, които са по-големи от 10MB и не започват с ‘Metallica’.
Третата команда търси за файлове в същата директория като по-горе за файлове, които започват с ‘Metallica’ или файлове, които са по-големи от 10 MB.
Може би най-важната опция е exec. exec ви позволява да изпълняваате опредлена комнда върху резултатите от търсенето. Тук е показан прост пример, в който искаме да изведем детайлите за всеки намерен файл.
$ find / – name ‘Metallica*’ -exec ls -l {\}\ \;
Командата ще изведе всички файлове, които започват с ‘Metallica’ и после ще изпълни ‘ls -l’ върху всеки от тях.
{\}\ показва файла върнат от търсенето, който ще бъде заместен в командата, която изпълняваме.
\; се използва, за да се укаже края на командата и е задължителен.
Possibly Related Posts:
- Оптимизиране на Firefox с tmpfs
- Системни статистики с vmstat
- drop_caches
- Конфигуриране на ядрото: Поддръжка на мрежови протоколи
- Конфигуриране на ядрото