我有一個項目,我試圖將所有的文件在Linux系統上收集到一個CSV轉儲到數據庫。獲取「查找」在CSV輸出
我的劇本有
FIND_CMD $TARGET $OPTS -xdev $FS -printf "%h,%f,%y,%s,%TY-%Tm-%Td %TH:%TM:%.2TS\n"
但問題是,我與他們逗號的文件名%f
和目錄名%h
。
那麼我想我可以把每個項目放在引號中,這不會是一個問題。
$FIND_CMD $TARGET $OPTS -xdev $FS -printf "\"%h\",\"%f\",\"%y\",\"%s\",\"%TY-%Tm-%Td %TH:%TM:%.2TS\"\n"
但後來我發現,我有引號的文件名在其中:(
,所以我試圖找出如何我可以分「與‘’周圍整個事情的報價。
例子:
「/家」 的 「目錄」, 「文件名」, 「F」, 「1024」, 「2016年11月4日11:11:00」
所以我不知道是否有給我打電話sed
作爲-printf
一部分,所以我可以告訴find命令來替換方式「s的‘’S
我的另一個想法是,以取代分隔符我發現用類似|的東西命令但如果文件名或目錄名有| |,我可能會遇到同樣的問題在(這是可能的)
是否有任何其他創意解決方案,我可能沒有想到?
寫一個腳本,在其標準輸入上讀取文件名,並根據需要格式化CSV行(它可以使用stat來獲取所有屬性)。然後將'find ... -print'的輸出傳遞給它。 – Barmar
Nul是不允許在文件名中的(這就是爲什麼'find'有'print0'),這樣就可以創建一個好的分隔符... https://en.m.wikipedia.org/wiki/Comparison_of_file_systems –
@MarkSetchell我認爲那會做。那麼我不需要在每個值附近加引號。只要使用NUL字節作爲分隔符,意味着我可以將「」放在哪裏,並且我的CSV閱讀器將能夠處理它。謝謝!我會給你一個! – anoopb