cp:沉默"省略目录"警告

Aje*_*i32 8 bash cp

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

cp: omitting directory `./backup_1364935268'
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*zak 7

适合我的解决方案如下:

find -maxdepth 1 -type f -exec cp {} backup_1364935268/ \;
Run Code Online (Sandbox Code Playgroud)

它从当前目录复制所有(包括以点开头的)文件,不触及目录并且不抱怨它.


hek*_*mgl 3

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


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

  • 使用将 stderr 重定向到 stdout2>&1
  • 将输出通过管道传输到 grep -v
script 2>&1 | grep -v 'omitting directory' 
Run Code Online (Sandbox Code Playgroud)

引用 grep 手册页:

  -v, --invert-match
Run Code Online (Sandbox Code Playgroud)
          Invert the sense of matching, to select non-matching lines.
Run Code Online (Sandbox Code Playgroud)

  • 嗯,我想这会起作用。我希望 cp 上有某种选项可以消除类似的警告消息,但我想不会。 (2认同)