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

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

以前、非常に似た質問をしましたが、それは1つのサブディレクトリについてだけでした。Linux コマンドラインでサブディレクトリ内のファイルを csv ファイルに書き込み、親ディレクトリに保存する'dir' というディレクトリがあり、その中に 5 つのサブディレクトリ (sub1、sub2、...sub5) があります。各サブディレクトリには多くのファイルがあります。Linux のコマンド ラインを使用して、すべてのサブディレクトリのファイルのリストを CSV ファイルに書き込み、'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 {} \;最後の の前の部分を削除します/{}各ディレクトリの代替が見つかりました。man find詳細については を参照してください。

関連情報