ディレクトリ内のすべてのファイルを処理する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