Намиране и копиране на файлове с определени разширения с командата "find"
Командата "find" е мощен инструмент в Linux, който позволява потребителите да намират и извършват операции с файлове и директории според разнообразни критерии. Една от най-често използваните задачи на "find" е да открие файлове с определени разширения и след това да ги копира в желана директория.
В тази статия ще разгледаме как да използваме командата “find” за тази цел.
За да намерите всички файлове с определени разширения в текущата директория и поддиректориите, използвайте командата "find":
find . -type f \( -name "*.sh" -o -name "*.txt" \)
Тази команда ще намери всички файлове с разширение .sh или .txt в текущата директория и поддиректориите.
find . -type f -name "*.txt"
Тази команда ще намери всички файлове с разширение .txt в текущата директория и поддиректориите.
За да копирате в текстов документ всички файлове с разширение .txt , използвайте следната команда:
find . -type f -name "*.txt" > files.txt
Тази комбинация от команди ще изведе списъка с намерените .txt файлове и ще го запише във файл с име "files.txt". Ако "files.txt" не съществува, този оператор ще го създаде. Ако вече съществува, операторът ще го презапише.
Как да пропуснете определена дестинация за търсене
Добавете опцията "-not -path" за да изключите файловете, свързани с определена директория.
Например, за да изключите файловете, свързани в директорията .vscode:
find . -type f -name "*.txt" -not -path "./.vscode/*"
Друг пример: Предположете, че имате следната файлова структура:
/home/user/documents/
├── file1.txt
├── file2.jpg
├── subfolder/
│ ├── file3.txt
│ ├── file4.pdf
│ └── file5.jpg
└── general/
├── file6.txt
└── file7.jpg
Искате да намерите всички .txt файлове в директорията /home/user/documents/ и нейните поддиректории, без да включвате директорията /home/user/documents/general/ в търсенето. След това искате да копирате тези .txt файлове в нова директория /home/user/kopirani_tuk/.
Командата за този случай би изглеждала така:
find /home/user/documents/ -not -path "/home/user/documents/exclude/*" -name "*.txt" -exec cp {} /home/user/kopirani_tuk/ \;
Тази команда ще намери всички .txt файлове в директорията /home/user/documents/ и нейните поддиректории, без да включва директорията /home/user/documents/general/. След това намерените .txt файлове ще бъдат копирани в директорията /home/user/kopirani_tuk/.
След изпълнението на тази команда, директорията /home/user/kopirani_tuk/ ще съдържа всички .txt файлове от началната директория, които не са в директорията за изключване.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut