Bashワイルドカードは隠しファイルを拡張しません。

Bashワイルドカードは隠しファイルを拡張しません。

ディレクトリ内のすべてのファイルを処理するbashスクリプトを作成しようとしています。これらのファイル名はすべてドットで始まるため、非表示になります。ワイルドカードを使用してディレクトリ内のすべてのアイテムをインポートしようとすると、ワイルドカードは拡張されません。

私のループコードは次のようになります。

#!/bin/bash
shopt -s extglob

for i in "$(pwd)"/*; do
  echo "$i"
done

出力は単なるです/Users/.../*

これは、隠しファイルを具体的に扱う点で他のスレッドとは異なります。同様のファイルをtestディレクトリに追加すると機能します。わかりました/Users/.../test

また、端末で別々に実行してみましたが、同じ結果を得ました。ワイルドカード拡張を隠すファイルを作成するには?

ベストアンサー1

私はそれを考えた!もっと詳しく見てくださいshoptのドキュメントdotglob、という点で始まるファイル名を含むオプションがあります。

shopt -s dotglobスクリプトの先頭に追加しましたが、これで動作します。これで、出力にすべての隠しファイルとディレクトリが一覧表示されます(./および除外../)。

私のスクリプトは次のようになります。

#!/bin/bash
shopt -s extglob
shopt -s dotglob

for i in "$(pwd)"/*; do
  echo "$i"
done

おすすめ記事