私のシェルスクリプトが私のホームディレクトリ内のすべてのサブディレクトリにアクセスできるようにしたいです。ディレクトリでいくつかのタスクを実行し、出力をスプールファイルに送信してから、次のディレクトリに移動します。デフォルトディレクトリ= /tmpサブディレクトリ= ABCD(サブディレクトリ4つ)を考えてみましょう。
ベストアンサー1
for
ループを使用してください。
for d in $(find /path/to/dir -maxdepth 1 -type d)
do
#Do something, the directory is accessible with $d:
echo $d
done >output_file
そのディレクトリのサブディレクトリのみを検索します/path/to/dir
。ディレクトリ名にスペースや特殊文字が含まれている場合、上記の簡単な例は失敗します。より安全なアプローチは次のとおりです。
find /tmp -maxdepth 1 -type d -print0 |
while IFS= read -rd '' dir; do echo "$dir"; done
または単純にbash
:
for d in /path/to/dir/*; do
if [ -d "$d" ]; then
echo "$d"
fi
done
(逆に、find
ディレクトリへのシンボリックリンクも考慮し、隠されたシンボリックリンクは除外します。)