ターミナルフォルダにディレクトリがあります。MobaXtermを使用しています。このディレクトリには多数のファイルがあります。ファイル名は長く、一部不正な文字が含まれています。ファイル名の例は次のとおりです。「2015年以降の開発アジェンダに関する事務総長のハイレベルパネルの3人の共同議長(インドネシア、リベリア、英国) - Media Stakeout-1861343067001.m4a」次のコマンド ラインを使用して csv ファイルにファイル名を書き込みましたが、これまでのところは機能していました。
dir$ find . -type f > names.csv
ただし今回は、ファイル名が 1 つの列ではなく、複数の列に分割されます。
列 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"/'
これにより、 のインスタンスが"
に置き換えられ""
、空でない行が二重引用符で囲まれます。