
以前、非常に似た質問をしましたが、それは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
詳細については を参照してください。