ターミナルフォルダにディレクトリがあります。私はMobaXtermを使用しています。このディレクトリには多くのファイルがあります。ファイル名が非常に長く、いくつかの無効な文字が含まれています。サンプルファイル名は次のとおりです。「2015年以降開発議題に関する事務総長高位級パネル共同議長3人(インドネシア、リベリア、イギリス) - Media Stakeout-1861343067001.m4a」。次のコマンドラインを使用してファイル名をcsvファイルに書き込んでおり、これまでは機能していました。
dir$ find . -type f > names.csv
ところで今回はファイル名がもはや一つの列ではなく複数の列に分かれています。
A列にフルネームを入力したいです。カンマを含む元のファイル名を書きたいです。同じコマンドで以前のデータセットにコンマを含むファイル名を書き込むことができましたが、唯一の違いは、これらのファイル名がこのファイル名より短いことです。
どうすれば修正できますか?
答え1
Linuxでは、GNU findには-printf
ファイル名を指定された形式で印刷してCSVにインポートするオプションがあります。たとえば、ファイル名を二重引用符で囲むことができます。
find . -type f -printf '"%p"\n'
答え2
答え3
CSVにはさまざまな種類がありますが、sedを使用するRFC 4180準拠のソリューションは次のとおりです。
find . -type f | sed 's/"/""/g;s/\(.\+\)/"\1"/'
"
これは with インスタンスを置き換え、""
空でない行を二重引用符で囲みます。