2013-04-02 148 views
6

我在bash腳本中使用命令cp ./* "backup_$timestamp"將目錄中的所有文件備份到子目錄中的備份文件夾中。這工作得很好,但腳本繼續輸出警告消息:cp:沉默「省略目錄」警告

cp: omitting directory `./backup_1364935268' 

我如何告訴CP閉嘴不沉默,我可能想知道其他任何警告?

回答

2

也許你想在該腳本中使用cp -r。這將遞歸地複製源包括目錄。目錄將被複制並且消息將消失。


如果你不想複製的目錄,你可以做到以下幾點:

  • 重定向標準錯誤使用2>&1
  • 管道輸出到grep -v
到stdout
script | grep -v 'omitting directory' 

grep man quote:

-v, --invert-match 
      Invert the sense of matching, to select non-matching lines. 
+1

呃,這將工作,我猜。我希望在cp上有這樣的選項來消除這種警告信息,但我想不是。 – Ajedi32

+0

你需要遞歸複製所有文件和目標嗎?或者只有'backup_ $ timestamp'第一級中的文件? – hek2mgl

+0

不是,因爲每次我做備份時,我都會備份所有較舊的備份以及其他文件。謝謝你的幫助。 – Ajedi32

7

爲我的作品的解決方案如下:

find -maxdepth 1 -type f -exec cp {} backup_1364935268/ \; 

它將所有(包括這些點開頭)從當前目錄中的文件,不觸及目錄和不抱怨它。

+0

加一:在Makefile中有效。 – ace

+0

注意:當使用BSD find(例如Mac)時,你需要一個目的地作爲第一個參數,所以:'find。 -maxdepth 1 -type f -exec cp {} backup_1364935268/\;' – jjj