フォルダがありますA
。このフォルダ内にはいくつかのファイルがあり、そのファイルを含むa,b,c,d
サブフォルダがあります。B
e,f,g
ファイルを開きたいとしましょう。a,b,c,d
それから。xdg-open *
ただし、これもサブフォルダに移動してB
開きますe,f,g
。それを開く最も簡単な方法は何ですかa,b,c,d
?
編集:私が本当に意味するのは、サブフォルダに含まれるファイルではなく、フォルダ内のすべてのファイルを開く方法です。
答え1
どうですか?find A -maxdepth 1 -type f -exec xdg-open {} \;
これにより、最上位レベルを超えずにフォルダAのすべてのファイルが開きます。
答え2
方法 #1 - シェル拡張
探している項目の名前が順番に指定されていることがわかっている場合は、さまざまな方法でシェル拡張を使用できます。
はい
$ xdg-open [a-d]
$ xdg-open {a..d}
$ xdg-open a* b*
方法 #2 - 拡張ワイルドカード
Bash(バージョン3.2+)では、拡張ワイルドカードを使用して、特定のものを除くすべてを含めることができます。私はこれがあなたが求めるものだと思います。
はい
$ xdg-open !(B)
$ xdg-open !(A|B)
デモ
echo
この機能は、拡張ファイルおよび/またはディレクトリリストに対して実際にコマンドを実行しなくてもglobstarまたは拡張globingの結果を表示できるようにするためによく使用されます。
はい
たとえば、次のようなファイルディレクトリがあります。
$ ls -l
total 8
-rw-rw-r-- 1 saml saml 0 Nov 15 20:12 a
drwxrwxr-x 2 saml saml 4096 Nov 15 20:23 A
-rw-rw-r-- 1 saml saml 0 Nov 15 20:12 b
drwxrwxr-x 2 saml saml 4096 Nov 15 20:12 B
-rw-rw-r-- 1 saml saml 0 Nov 15 20:12 c
-rw-rw-r-- 1 saml saml 0 Nov 15 20:12 d
-rw-rw-r-- 1 saml saml 0 Nov 15 20:12 e
-rw-rw-r-- 1 saml saml 0 Nov 15 20:12 f
これで、上記の拡張を試してみると、どのくらい公平であるかを確認できます。
$ echo [a-d]
a A b B c d
$ echo {a..d}
a b c d
$ echo a* b*
a b
$ echo !(B)
a A b c d e f
$ echo !(A|B)
a b c d e f
拡張ワイルドカード
さまざまな異なる方法を使用してシェルの一致方法を制御できます。たとえば、
?(pattern-list) Matches zero or one occurrence of the given patterns
*(pattern-list) Matches zero or more occurrences of the given patterns
+(pattern-list) Matches one or more occurrences of the given patterns
@(pattern-list) Matches one of the given patterns
!(pattern-list) Matches anything except one of the given patterns
以下のLinux Journalの記事で、これについての詳細を読むことができます。Bash拡張ワイルドカード。
答え3
zsh
シェル(例:対話型シェル)の使用bash
:
zsh -c 'xdg-open A/*(.)'
.
これはglob修飾子を使用し、ディレクトリの通常のファイルとのみzsh
一致します。通常のファイルとシンボリックリンクを一致させるには、ワイルドカードパターンを使用します。A/*
A
A/*(-.)