在很多情况下,*
实际上不可避免地会使用a-例如,rm -rf *
在包含数千个子文件夹和文件的文件夹中。
但是,如果您只想从rm
命令中排除一个或两个文件或文件夹,该怎么办?我GOOGLE了我的路周围,才发现好像挺复杂的解决方案,find . -depth -not \( -name 'one' -o -name 'two' \
-o -name 'three' \) -exec rm {} \;
如规定在这里。
有没有可能以更简单的方式做到这一点-而不走弯路find
?例如rm -rf --exclude='one' --exclude='two' --exclude='three' *
喜欢在rsync还是rm -rf -e 'one','two','three' *
?
甚至一般的可能性排除的东西*
(所以其他命令一样cp
,mv
...没有实现自己的)?大概是*{'one','two','three'}
什么?
mv -t /tmp one two three && rm -rf * && mv -t . /tmp/one /tmp/two /tmp/three
,但是我更希望有一个解决方案,它可以明确地从*
。肯定会有无法将文件移动或复制到另一个目标的情况。
find
该--delete
选项(无需rm
为每个文件执行。这是不必要的开销)。