cp:沉默“省略目录”警告

时间:2013-04-02 20:47:04

标签: bash cp

我在bash脚本中使用命令cp ./* "backup_$timestamp"将目录中的所有文件备份到子目录中的备份文件夹中。这工作正常,但脚本不断输出警告消息:

cp: omitting directory `./backup_1364935268'

如何在不消除我可能想知道的任何其他警告的情况下告诉cp关闭?

3 个答案:

答案 0 :(得分:7)

对我有用的解决方案如下:

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

它从当前目录中复制所有(包括以点开头的)文件,不触及目录,也不会抱怨它。

答案 1 :(得分:3)

您可能希望在该脚本中使用cp -r。这将以递归方式复制源包括目录。目录将被复制,消息将消失。


如果您不想复制目录,可以执行以下操作:

  • 使用2>&1
  • 将stderr重定向到stdout
  • 将输出传递给grep -v
script | grep -v 'omitting directory' 

引自grep man page:

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

答案 2 :(得分:0)

复制目录时,请确保使用-R

cp -R源source_duplicate_copy_name

-R,-r,-递归复制目录

  --reflink[=WHEN]         control clone/CoW copies. See below
  --remove-destination     remove each existing destination file before
                             attempting to open it (contrast with --force)
  --sparse=WHEN            control creation of sparse files. See below
  --strip-trailing-slashes  remove any trailing slashes from each SOURCE