iT邦幫忙

0

如何處理 linux系統中包含特殊符號的檔名之檔案

cjshih 2011-06-15 12:00:5110481 瀏覽

Dear 各位達人,

我知道linux 在檔案上盡量不要去使用特殊符號的檔名
但我同事最近接手一台網站系統,是suse的平台
最近需要重新調整檔案的樹狀架構
因使用者有上傳了一些含特殊檔名的檔案,如空格、~% _-
及word中常用的符號
導致我們在寫batch或是用cp、mv等做檔案處理時
都造成執行失敗。

請問單兵應如何應變,才能有效率處理這些散落在數百個資料夾中的數以千計的檔案呢?
感激不盡

8
逮丸逮丸
iT邦大師 1 級 ‧ 2011-06-15 13:28:31
最佳解答

試試用 tar 的方式,是否避開此問題?

<pre class="c" name="code">cd /from-stuff/
tar cf – . | (cd /to-stuff; tar xvf -)

然後再刪掉 from-stuff 這目錄。

當然,您要移大量的檔案,
不會是一個一個移,
而是以較上層的目錄為單位,
像使用者家目錄為單位來移。

應可列出哪些家目錄下有特別符號檔名的家目錄,
無特殊符號者用一般方式進行,
有者,再用這tar的方式來進行。

參考來源:
using tar to copy files

8
ayu
iT邦好手 3 級 ‧ 2011-06-15 18:37:00

unix系統上會有含特殊檔名的檔案, 通常不會是user以ftp方式上傳,
我覺得使用者以網路芳鄰方式使用samba分享區的可能性為大,
若如此,
先在 windows 下連線到該 samba 區,
再用一些批次改檔名的軟體(例如renamer), 把那些不適合出現在UNIX系統上的檔名批次改掉,
然後才在UNIX下進行cp、mv之類的動作,
您覺得如何?

2
harrier7
iT邦研究生 2 級 ‧ 2011-06-20 17:27:22

你要在特殊字元前加入 \ 告訴系統下一個特殊字元要當作一般字元處理。
用 find、sed、xargs 應該就能達到您的需求。

我要發表回答

立即登入回答