2013-04-02 105 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