Linuxのcsvファイルにサブディレクトリのファイル名を書き込む

Linuxのcsvファイルにサブディレクトリのファイル名を書き込む

私は以前も同様の質問をしましたが、サブディレクトリに固有の質問でした。サブディレクトリのファイルをcsvファイルに書き込み、Linuxコマンドラインの親ディレクトリに保存します。。 5つのサブディレクトリ(sub1、sub2、..sub5)がある "dir"というディレクトリがあります。各サブディレクトリには多くのファイルがあります。すべてのサブディレクトリのファイルのリストをCSVファイルに作成し、Linuxのコマンドラインを使用して "dir"ディレクトリに保存したいと思います。私のコードはファイル名(name1、name2など)のみが必要ですが、ファイル名全体をパス(./sub1/name1、./sub1/name2など)として書き込むことを除いて、すぐにこれを行います。 dirフォルダで使用するコマンドラインは次のとおりです。

dir$ find . -type f  > names.csv

答え1

質問に「Linux」というタグを付けたので、GNUがあるとしますfind

find . -type f -printf '%f\n' > names.csv 

からman find

          %f     File's  name  with  any leading directories removed (only
                 the last element).

答え2

dir$ find . -type f -execdir basename {} \; > names.csv

説明する

  • -execdir各結果に対して次のコマンドを実行します。
  • basename {} \;final 前の部分を削除します/{}見つかった各ディレクトリを置き換えます。詳細についてはを参照してくださいman find

関連情報