1. ホーム
  2. bash

[解決済み] ls コマンド: どうすれば、1ファイルにつき1行の再帰的なフルパス リストを取得できますか?

2022-03-17 11:47:37

質問

どうすれば ls に再帰的な一行ごとのパスの平坦なリストを吐き出させることができますか?

例えば、私はファイルのフルパスとフラットなリストが欲しいだけです。

/home/dreftymac/.
/home/dreftymac/foo.txt
/home/dreftymac/bar.txt
/home/dreftymac/stackoverflow
/home/dreftymac/stackoverflow/alpha.txt
/home/dreftymac/stackoverflow/bravo.txt
/home/dreftymac/stackoverflow/charlie.txt

ls -a1 はほぼ必要なものを提供してくれますが、パスの断片は必要なく、フルパスが必要です。

解決方法は?

を本当に使いたいのなら ls の場合、awk を使ってその出力をフォーマットします。

ls -R /path | awk '
/:$/&&f{s=$0;f=0}
/:$/&&!f{sub(/:$/,"");s=$0;f=1;next}
NF&&f{ print s"/"$0 }'