仅限cp非隐藏文件

时间:2012-08-07 19:42:24

标签: shell cp

是否有一种在shell上运行cp的好方法(在我的情况下为MinGW),只复制非隐藏文件(即名称不以{{开头的文件) 1}})?

我想排除我的.文件夹及其内容。

3 个答案:

答案 0 :(得分:8)

shell不会展开*以包含以点开头的名称,因此:

cp * /target/directory

这不会复制.svn目录。

如果这不是您的问题(例如,您尝试使用包含隐藏文件的子目录进行递归复制),请说明您的目标。

答案 1 :(得分:1)

ls本身只会显示非隐藏文件。如果将echo $file命令替换为应该起作用的cp命令。

for file in `ls`; do echo $file; done

这样的事情可以正常工作:

for file in `ls`; do cp $file /path/to/desitination; done

有更复杂的方法可以做到这一点,但是根据您的需要,这似乎已经足够了。

**免责声明:如果文件名中有空格,则不起作用。

修复只是使用星形通配符。如果您运行echo *,您会发现这不会扩展到隐藏文件。感谢Jonathan Leffler

答案 2 :(得分:1)

您可以使用ls列出所有非隐藏文件并复制它:

cp $(ls) destination