рд╣рдо рд╣рдЯрд╛рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред [рд░реЗ: рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ "рдЦрд░рд╛рдм" рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛]

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕ рдХреА рджреБрдирд┐рдпрд╛ рд╡рд┐рд╡рд┐рдз рд╣реИред рдПрдХ рд╣реА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВред

рдХрднреА-рдХрднреА рдПрдХ рд▓рд┐рдирдХреНрд╕реЙрдЗрдб рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХреА рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЗрдЪреНрдЫрд╛ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдпрд╣ рд░рд┐рдХреЙрд░реНрдб рдкреИрджрд╛ рд╣реБрдЖ рдерд╛ред

рд╡рд╣ рд╡рд┐рд╖рдп рдЬрд┐рд╕рдореЗрдВ рдЧрд▓рдд рдирд╛рдореЛрдВ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рд╡рд┐рд╖рдп рдпрд╣рд╛рдВ рдкрд░ рдерд╛ ред рдЕрдЧрд▓рд╛, рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред "рд╕рд╣реА" рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╣реИ "рдЧрд▓рдд" - рд╕рднреА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдирдВрдмрд░ рдХреЗ рд╕рд╛рдеред

рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдбрд┐рд▓реАрдЯ


рдпрджрд┐ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ (рдпрд╛ рдЖрдк рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЙрдкрд╕рдореВрд╣ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Rm рдХрдорд╛рдВрдб рдореЗрдВ -i рдСрдкреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдпреВрдЬрд░ рд╕реЗ рдлрд╛рдЗрд▓ рдбрд┐рд▓реАрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреНрдлрд░реНрдореЗрд╢рди рдорд╛рдВрдЧрддрд╛ рд╣реИред

$ ls -lAh -rw-r--r-- 1 user user 0 May 15 01:47 ? -rw-r--r-- 1 user user 0 May 15 01:47 ? -rw-r--r-- 1 user user 0 May 15 01:47 ? -rw-r--r-- 1 user user 0 May 15 01:48 1.txt -rw-r--r-- 1 user user 0 May 15 01:48 ?.txt $ rm -i * rm: remove regular empty file `\n'? y rm: remove regular empty file `\v'? y rm: remove regular empty file `\f'? y rm: remove regular empty file `1.txt'? n rm: remove regular empty file `\r.txt'? y $ ls -lAh -rw-r--r-- 1 user user 0 May 15 01:48 1.txt 

рддреНрд╡рд░рд┐рдд рдФрд░ рдЖрд╕рд╛рдиред

рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдирд╛


рд╣рдо рд╕рд╣реА рдирд╛рдо рдФрд░ 100 рдЧрд▓рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде 100 рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдХрд░ рдХрд╛рд░реНрдп рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ:
 $ touch {1..100}$'\x0a'.txt $ touch {1..100}.txt $ ls -A ? 15?.txt 22?.txt 2?.txt 37?.txt 44?.txt 51?.txt 59?.txt 66?.txt 73?.txt 80?.txt 88?.txt 95?.txt ? 16.txt 23.txt 30.txt 38.txt 45.txt 52.txt 5.txt 67.txt 74.txt 81.txt 89.txt 96.txt ? 16?.txt 23?.txt 30?.txt 38?.txt 45?.txt 52?.txt 5?.txt 67?.txt 74?.txt 81?.txt 89?.txt 96?.txt 100.txt 17.txt 24.txt 31.txt 39.txt 46.txt 53.txt 60.txt 68.txt 75.txt 82.txt 8.txt 97.txt 100?.txt 17?.txt 24?.txt 31?.txt 39?.txt 46?.txt 53?.txt 60?.txt 68?.txt 75?.txt 82?.txt 8?.txt 97?.txt 10.txt 18.txt 25.txt 32.txt 3.txt 47.txt 54.txt 61.txt 69.txt 76.txt 83.txt 90.txt 98.txt 10?.txt 18?.txt 25?.txt 32?.txt 3?.txt 47?.txt 54?.txt 61?.txt 69?.txt 76?.txt 83?.txt 90?.txt 98?.txt 11.txt 19.txt 26.txt 33.txt 40.txt 48.txt 55.txt 62.txt 6.txt 77.txt 84.txt 91.txt 99.txt 11?.txt 19?.txt 26?.txt 33?.txt 40?.txt 48?.txt 55?.txt 62?.txt 6?.txt 77?.txt 84?.txt 91?.txt 99?.txt 12.txt 1.txt 27.txt 34.txt 41.txt 49.txt 56.txt 63.txt 70.txt 78.txt 85.txt 92.txt 9.txt 12?.txt 1?.txt 27?.txt 34?.txt 41?.txt 49?.txt 56?.txt 63?.txt 70?.txt 78?.txt 85?.txt 92?.txt 9?.txt 13.txt 20.txt 28.txt 35.txt 42.txt 4.txt 57.txt 64.txt 71.txt 79.txt 86.txt 93.txt ?.txt 13?.txt 20?.txt 28?.txt 35?.txt 42?.txt 4?.txt 57?.txt 64?.txt 71?.txt 79?.txt 86?.txt 93?.txt 14.txt 21.txt 29.txt 36.txt 43.txt 50.txt 58.txt 65.txt 72.txt 7.txt 87.txt 94.txt 14?.txt 21?.txt 29?.txt 36?.txt 43?.txt 50?.txt 58?.txt 65?.txt 72?.txt 7?.txt 87?.txt 94?.txt 15.txt 22.txt 2.txt 37.txt 44.txt 51.txt 59.txt 66.txt 73.txt 80.txt 88.txt 95.txt 

рдорд╛рдорд▓рд╛ рдереЛрдбрд╝рд╛ рджреВрд░ рдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╣рдореЗрдВ рдлреЙрд░реНрдо рдирдВрдмрд░ рдХреА рдлрд╛рдЗрд▓реЗрдВ рдЪрд╛рд╣рд┐рдПред рдирдХрд╛рд░рд╛рддреНрдордХ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЪреБрдирддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдЯрд╛рдирд╛ рд╣реИ:
 $ ls *[!0-9].txt 100?.txt 17?.txt 24?.txt 31?.txt 39?.txt 46?.txt 53?.txt 60?.txt 68?.txt 75?.txt 82?.txt 8?.txt 97?.txt 10?.txt 18?.txt 25?.txt 32?.txt 3?.txt 47?.txt 54?.txt 61?.txt 69?.txt 76?.txt 83?.txt 90?.txt 98?.txt 11?.txt 19?.txt 26?.txt 33?.txt 40?.txt 48?.txt 55?.txt 62?.txt 6?.txt 77?.txt 84?.txt 91?.txt 99?.txt 12?.txt 1?.txt 27?.txt 34?.txt 41?.txt 49?.txt 56?.txt 63?.txt 70?.txt 78?.txt 85?.txt 92?.txt 9?.txt 13?.txt 20?.txt 28?.txt 35?.txt 42?.txt 4?.txt 57?.txt 64?.txt 71?.txt 79?.txt 86?.txt 93?.txt ?.txt 14?.txt 21?.txt 29?.txt 36?.txt 43?.txt 50?.txt 58?.txt 65?.txt 72?.txt 7?.txt 87?.txt 94?.txt 15?.txt 22?.txt 2?.txt 37?.txt 44?.txt 51?.txt 59?.txt 66?.txt 73?.txt 80?.txt 88?.txt 95?.txt 16?.txt 23?.txt 30?.txt 38?.txt 45?.txt 52?.txt 5?.txt 67?.txt 74?.txt 81?.txt 89?.txt 96?.txt 

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ, рд╣рдо рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВред
 $ rm *[!0-9].txt 

рдЦреЛрдЬ


рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ рдиреЗ рд╢рд╛рдпрдж рдпрд╣ рджреЗрдЦрд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореИрдВрдиреЗ 3 рдЕрдорд╛рдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд╕реБрдзрд╛рд░рд╛ рдЬрд╛рдПрдЧрд╛ред
рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдлреЙрд░реНрдо рдирдВрдмрд░ рдХреА 100 рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рдХреБрдЫ рдЕрдЬреАрдм рдирд╛рдо рд╡рд╛рд▓реА 3 рдлрд╛рдЗрд▓реЗрдВред

рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЬрд┐рди рддрд░реАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ xargs ( рджрд╛рдврд╝реА рдХреЗ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рд░рд┐рд╡рд╛рдЬ * рдирд┐рдХреНрд╕ рдкреНрд░рд╢рд╛рд╕рдХ рдХреЛ рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП)ред

 $ find . -type f -not -name '*txt' ./? ./? ./? $ find . -type f -not -name '*.txt' | xargs rm rm: cannot remove `./': Is a directory 

рд╣рдореНрдо, рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╖реНрдЯрдкреНрд░рдж рдирд┐рдХрд▓рд╛ред

 % ls -A ? 15.txt 21.txt 28.txt 34.txt 40.txt 47.txt 53.txt 5.txt 66.txt 72.txt 79.txt 85.txt 91.txt 98.txt 100.txt 16.txt 22.txt 29.txt 35.txt 41.txt 48.txt 54.txt 60.txt 67.txt 73.txt 7.txt 86.txt 92.txt 99.txt 10.txt 17.txt 23.txt 2.txt 36.txt 42.txt 49.txt 55.txt 61.txt 68.txt 74.txt 80.txt 87.txt 93.txt 9.txt 11.txt 18.txt 24.txt 30.txt 37.txt 43.txt 4.txt 56.txt 62.txt 69.txt 75.txt 81.txt 88.txt 94.txt 12.txt 19.txt 25.txt 31.txt 38.txt 44.txt 50.txt 57.txt 63.txt 6.txt 76.txt 82.txt 89.txt 95.txt 13.txt 1.txt 26.txt 32.txt 39.txt 45.txt 51.txt 58.txt 64.txt 70.txt 77.txt 83.txt 8.txt 96.txt 14.txt 20.txt 27.txt 33.txt 3.txt 46.txt 52.txt 59.txt 65.txt 71.txt 78.txt 84.txt 90.txt 97.txt 

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рд╡рд╣ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╣реИред

extglob


рдмреИрд╢ рдХреЗ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рд╣рдо extglob рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ - рдкреИрдЯрд░реНрди (рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди) рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧред
 $ shopt extglob extglob off $ shopt -s extglob $ shopt extglob extglob on 

рд╡рд┐рдХрд▓реНрдк рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ) "рдиреЗрдЧреЗрдЯрд┐рд╡ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдореВрдиреЛрдВ рдХреА рд╕реВрдЪреА рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:
 $ ls !(*.txt) ? $ rm !(*.txt) $ ls * | wc 100 100 692 

100 рд╕рд╣реА рдлрд╛рдЗрд▓реЗрдВ рдмрдЪреА рд╣реИрдВ, рд╕рдлрд▓рддрд╛!
рдпрджрд┐ рдЕрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХреНрд╕рдЧреНрд▓реЛрдм рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ:
 $ shopt -u extglob 

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдкреНрд░рдпреБрдХреНрдд рд╕рд╛рдордЧреНрд░реА:
рдЖрджрдореА рдЖрд░.рдПрдо.
рдЖрджрдореА рдХреЛ рдорд╛рд░рдирд╛
рдЖрджрдореА рдЦреЛрдЬреЛ

Source: https://habr.com/ru/post/In179837/


All Articles