私はこの小さなシェルスクリプトについて私の誤解を見つけました。

私はこの小さなシェルスクリプトについて私の誤解を見つけました。

実際、私は複数のサブフォルダを含むフォルダを持っていますが、各サブフォルダには多くの画像があります。

各サブフォルダー内のすべてのファイル名を、次の形式でそのサブフォルダー内のテキストファイル(filesNames.txt)に収集しようとしています。

絶対/パス/to/角度/ファイル/ファイル名

だから親フォルダにスクリプトを書いた。

#!/bin/sh

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

私の質問それだけです:

各サブフォルダの最初のファイルの絶対アドレスがあります。残りはファイル名にすぎず、絶対アドレスはありません。

 /run/media/parent_folder/subfolder/filename1.png
 filename2.png
 filename3.png
 ...

私の考えではこれと関係があると思います。$PWD各サブフォルダに対して変数を一度だけ繰り返します。スクリプトを適切な形式にどのように変更できますか?

よろしくお願いします。

ベストアンサー1

単一のfindコマンドで絶対パスを持つすべてのファイルが出力されます。

find $(pwd) -type f

おすすめ記事