現在のフォルダーにはサブフォルダーが含まれており、それぞれに処理したいファイルが含まれています。
興味のあるファイルは次のようになります。
someSubFolderCommonPathName*/*commonStringInFileName*
私の問題は、処理したくない名前が上記と同じで、末尾が_stringNotToMatch
:
someSubFolderCommonPathName*/*commonStringInFileName*_stringNotToMatch
パターン マッチング式でそれらを除外するにはどうすればよいですか?
簡単な例は次のとおりです。
for i in someSubFolderCommonPathName*/*commonStringInFileName*!(stringNotToMatch); do stat $i; done
...しかし、うまくいきません。
わかりました、これをさらに単純化すると、ここに例があります: 私は次のものを持っています:
me@my-laptop:~/a$ ls -R
.:
aPrettyBoy aPrettyGirl
./aPrettyBoy:
12cool21 12nice21 77nice77_ugly
./aPrettyGirl:
12cool21 12nice21 23nice23_ugly
そしてnice
、名前に含まれていて含まれていないすべてのファイルを表示しようとします_ugly
:
me@my-laptop:~/a$ for i in *Pretty*/*nice*!(_ugly); do echo $i; done
aPrettyBoy/12nice21
aPrettyBoy/77nice77_ugly
aPrettyGirl/12nice21
aPrettyGirl/23nice23_ugly
うまくいきませんでした。私は今星を含めます:
me@my-laptop:~/a$ for i in *Pretty*/*nice*!(*_ugly); do echo $i; done
aPrettyBoy/12nice21
aPrettyBoy/77nice77_ugly
aPrettyGirl/12nice21
aPrettyGirl/23nice23_ugly
まだ動作していません。今すぐfind
:
me@my-laptop:~/a$ find . -path "*Pretty*/*nice*" ! -name "_ugly" -exec echo {} \;
./aPrettyBoy/12nice21
./aPrettyBoy/77nice77_ugly
./aPrettyGirl/23nice23_ugly
./aPrettyGirl/12nice21
なだ。