find + xargs + cp 遇到文件名中帶空格如何處理


一,需求為查詢文件名為ZRSH開頭的時間為7月至今的所有文件並打包

 1.首先想到的就是find + xargs + cp  格式。。 

  find 2016073* -type f  -name *ZRSH\*   |xargs  cp {} ./data/

  執行之后發現說查詢出來的文件不是目錄,很訝異,於是直接執行find 2016073* -type f  -name *ZRSH\*    文件都查詢出來沒有任何問題。。

   2.猜測是cp 的時候有意想不到的問題發生。於是直接cp測試報文。發現文件名中存在空格,默認把空格后方的部分文件名當做目錄報錯了。

   find 2016072* -type f  -name *ZRSH\*  -print |xargs  cp {} ./data/  執行說文件名過長

   find 2016072* -type f  -name *ZRSH\*  -print |xargs -i cp {} ./data/

   3. 執行后仍然報錯,發現cp 的時候根本沒法將文件中帶有空格的整合至一起。 單獨執行cp 時將帶空格文件名用雙引號括起來會直接執行。

   find 2016072* -type f  -name *ZRSH\*  -print |xargs -i cp '{}' ./data/  成功。。

   4. tar 包

  tar -zcvf data.tar.gz data 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM