722
Comment:
|
936
clean up
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
That can be achieved through the !() extglob operator. You'll need {{{extglob}}} set. It can be checked with: | [:glob:"Globs"] are simple patterns that can be used to match filenames or strings. They're generally not very powerful. If you need more power, you can use ''extended globs''. In [:BASH:], you'll need the {{{extglob}}} option to be set. It can be checked with: |
Line 18: | Line 19: |
For the general case: Delete all files containing Pink_Floyd AND not containing The_Final_Cut: |
A more complex example -- delete all files containing Pink_Floyd AND not containing The_Final_Cut: |
Line 26: | Line 25: |
By the way: these kind of patterns can be used with KornShell and KornShell93, too. They don't have to be enabled there, but are the default patterns. | By the way: these kind of patterns can be used with the KornShell, too. They don't have to be enabled there, but are the default patterns. For a more thorough explanation of extended globs, see [:glob:]. |
How can I use a logical AND in a shell pattern (glob)?
[:glob:"Globs"] are simple patterns that can be used to match filenames or strings. They're generally not very powerful. If you need more power, you can use extended globs. In [:BASH:], you'll need the extglob option to be set. It can be checked with:
$ shopt extglob
and set with:
$ shopt -s extglob
To warm up, we'll move all files starting with foo AND not ending with .d to directory foo_thursday.d:
$ mv foo!(*.d) foo_thursday.d
A more complex example -- delete all files containing Pink_Floyd AND not containing The_Final_Cut:
$ rm !(!(*Pink_Floyd*)|*The_Final_Cut*)
By the way: these kind of patterns can be used with the KornShell, too. They don't have to be enabled there, but are the default patterns.
For a more thorough explanation of extended globs, see [:glob:].