11

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

cp: omitting directory `./backup_1364935268'

我如何告诉 cp 闭嘴而不消除我可能想知道的任何其他警告?

4

3 回答 3

9

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

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

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

于 2014-08-01T18:41:12.653 回答
3

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


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

  • 使用重定向标准错误到标准输出2>&1
  • 管道输出到 grep -v
script 2>&1 | grep -v 'omitting directory' 

引用 grep 手册页:

  -v, --invert-match
          Invert the sense of matching, to select non-matching lines.
于 2013-04-02T20:51:26.177 回答
-1

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

cp -R source source_duplicate_copy_name

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

  --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
于 2018-08-07T14:49:37.377 回答