🐧 Как ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ с нСсколькими Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ

Ка Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ

by itisgood

ΠžΠ±Π·ΠΎΡ€

Поиск ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² Π² бСспорядкС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ссли ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈΡ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Автоматизация процСсса поиска ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΡ‰Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Linux ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ наш Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π½Π°ΠΌ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° поставлСнной Π·Π°Π΄Π°Ρ‡Π΅.

Π’ этом руководствС ΠΌΡ‹ рассмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы создания списка Ρ„Π°ΠΉΠ»ΠΎΠ² с нСсколькими Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ Π² Linux.

ВсС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ инструкции Π±Ρ‹Π»ΠΈ протСстированы Π½Π° Ubuntu 20.04.6 LTS.

ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ls

Команда ls пСрСчисляСт всС Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.

Однако, комбинируя Π΅Π΅ со скобками ΠΈ подстановочными Π·Π½Π°ΠΊΠ°ΠΌΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ для пСрСчислСния Ρ„Π°ΠΉΠ»ΠΎΠ², Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ…ΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ, экономя врСмя ΠΈ силы Π½Π° ΠΈΡ… поиск ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

🐧 Как Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° рСгистра Π½Π° Linux

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ этой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° .txt ΠΈΠ»ΠΈ .csv:

$ ls *.{txt,csv}
checksums.txt  example2.csv  example3.txt  example5.csv
example1.csv   example2.txt  example4.csv  example5.txt
example1.txt   example3.csv  example4.txt

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ скобки ΠΈ подстановочныС Π·Π½Π°ΠΊΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ls, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ вывСсти список Ρ„Π°ΠΉΠ»ΠΎΠ² с нСсколькими Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ find с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ -iname ΠΈ -or

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° find Π² Linux опрСдСляСт мСстополоТСниС Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ ΠΈΡ… ΠΈΠΌΠ΅Π½Π°ΠΌ.

ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ find с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ -iname Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ поиск ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° рСгистра.

Π’ частности, заглавная ΠΈ строчная Ρ„ΠΎΡ€ΠΌΠ° символа Π² ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ эквивалСнтной для Ρ†Π΅Π»Π΅ΠΉ поиска.

🐧 УдалСниС пустых ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Find

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -or – это логичСский ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ find Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ², ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π»ΠΈΠ±ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° find с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ -iname ΠΈ -or ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для пСрСчислСния Ρ„Π°ΠΉΠ»ΠΎΠ², Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° .txt ΠΈΠ»ΠΈ .csv, Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅:

$ find -iname '*.txt' -or -iname '*.csv'
./example3.txt
./example1.csv
./case1.TXT
./example2.txt
./example5.csv
./example1.txt
./example3.csv
./example2.csv
./case1.CSV
./example5.txt
./checksums.txt
./case2.CSV
./example4.csv
./example4.txt
./case2.TXT

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ поиск ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ Π² смСшанном рСгистрС Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° рСгистра.

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ поиск Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° рСгистра для ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ Π² смСшанном рСгистрС.

ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ find с рСгулярными выраТСниями

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° find ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ рСгулярныС выраТСния (regex) для поиска ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… шаблонов Ρ„Π°ΠΉΠ»ΠΎΠ².

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ find с regex, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° .txt ΠΈΠ»ΠΈ .csv, Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅:

$ find . -iregex '.*\.\(csv\|txt\)' -printf '%f\n'
example3.txt
example1.csv
case1.TXT
example2.txt
example5.csv
example1.txt
example3.csv
example2.csv
case1.CSV
example5.txt
checksums.txt
case2.CSV
example4.csv
example4.txt
case2.TXT

Π’ΠΎΡ‚ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ find для поиска Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅:

find .

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ инструктируСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ find ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для поиска Ρ„Π°ΠΉΠ»ΠΎΠ², Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° .txt ΠΈΠ»ΠΈ .csv, нСзависимо ΠΎΡ‚ ΠΈΡ… рСгистра:

-iregex '.*\.\(csv\|txt\)'

НаконСц, ΠΌΡ‹ настраиваСм Π²Ρ‹Π²ΠΎΠ΄ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π½Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя Ρ„Π°ΠΉΠ»Π° Π±Π΅Π· ΠΏΡƒΡ‚Π΅ΠΉ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ:

-printf '%f\n'

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ использованиС рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ find ΠΎΡ‡Π΅Π½ΡŒ эффСктивно ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ для пСрСчислСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ список Ρ„Π°ΠΉΠ»ΠΎΠ² с нСсколькими Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ ls ΠΈ find.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Linux ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π½Π°ΠΌ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌ.

см. Ρ‚Π°ΠΊΠΆΠ΅:

 

 

You may also like

Leave a Comment