各サブディレクトリのファイル名をそのサブディレクトリのテキストファイルとして収集するにはどうすればよいですか?

各サブディレクトリのファイル名をそのサブディレクトリのテキストファイルとして収集するにはどうすればよいですか?

各サブディレクトリのすべてのファイル名をそのサブディレクトリのテキストファイルに保存したいので、次のスクリプトを作成しました。

#!/bin/bash
for X in "$PWD" *
do  
    if [ -d "$X" ];
    then
        cd "$X"
        files="$(ls)"
        echo "$files" >> filesNames.txt
    fi
done

ただし、以下を使用してサブディレクトリに入ることはできません。

cd "$X"

ここに問題がありますか?

ベストアンサー1

あなたの意見によると、さらに一歩深く入ることができます。この場合、globを使用してディレクトリ名を繰り返し、各ディレクトリの配列にファイルパスを保存してから、各パスの最後の要素を次に印刷できますfileNames.txt

#!/bin/sh

for dir in "$PWD"/*/; do
arr=( "$dir"* )
printf %s\\n "${arr[@]##*/}" > "$dir"filesNames.txt
done

シンボリックリンクを除外するには、次の条件を追加するだけです。if [[ ! -L "${dir%?}" ]]; then arr...

おすすめ記事