0

.htmlまたはではないファイルのbashでリストを作成しようとしています.js

私は次の両方の方法に疲れましたが、どちらも機能しませんか?

ls !(*.html|*.js)


ls | grep -v '\.(html|js)$'
4

4 に答える 4

2

それを行うにはさらに別の方法があります。bashには、拡張グロブパターンのオプションがあります。

shopt -s extglob
ls !(*.html|*.js)

(これはまだ正規表現ではなくグロブパターンであることに注意してください。たとえば*「前のもののゼロ以上」ではなく、「任意の文字列」を意味します)。

于 2012-11-29T01:58:47.310 に答える
1

お使いのバージョンがフラグをlsサポートしている場合:-I

ls -I *.js -I *.html

マニュアルページから:

-I, --ignore=PATTERN
       do not list implied entries matching shell PATTERN

それ以外の場合は、:を使用しfindます

find . -maxdepth 1 -type f ! \( -name "*.html" -o -name "*.js" \)

フォーマットについては、以下を追加します。

 -printf "%f\n"

ファイル名をパイプする必要がある場合は、printf()ステートメントを変更するだけで済みます。

-printf '%f\0' | xargs -0 ...
于 2012-11-29T01:35:47.273 に答える
0

オプションと一緒に使用extended-regexp-Eます:

ls | grep -E -v '\.(html|js)$'
于 2012-11-29T01:34:51.420 に答える
0

-Iフラグはls出力をフィルタリングできます。

ls -I '*.html' -I '*.js'

また

ls | grep -v -e '\.html' -e '\.js'

マニュアルページから:

 -e PATTERN, --regexp=PATTERN
              Use PATTERN as the pattern; useful to protect patterns beginning with -.
于 2012-11-29T11:40:52.563 に答える