怎么删除文件夹内除了某电影之外的其他文件

sh/bash/dash/ksh/zsh等Shell脚本
回复
anth
帖子: 174
注册时间: 2010-11-09 3:06

怎么删除文件夹内除了某电影之外的其他文件

#1

帖子 anth » 2012-05-23 0:19

有没有简单一点的方法删除/media/temp文件夹内除了2011.avi之外的所有文件和子文件夹,现在用find . -maxdepth 1 ! -name 2011.avi ! -name ".*"来凑合用,但是很不方便,我不喜欢用find,如果能用grep达到同样的功能就好了,因为我更加习惯ls -l | grep这种格式

回2楼
好用,另外,又认真看了一遍man grep,发现还有个-v参数刚好适合我的需要
anth@cn:~$ als
bash-debian.anth
Desktop
Documents
Downloads
lyrics
Music
Pictures
Public
startup-debian.anth
Templates
Videos
anth@cn:~$ als | grep -v anth
Desktop
Documents
Downloads
lyrics
Music
Pictures
Public
Templates
Videos
上次由 anth 在 2012-05-23 11:36,总共编辑 5 次。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 怎么删除文件夹内除了某电影之外的其他文件

#2

帖子 lilydjwg » 2012-05-23 0:29

zsh 的话:

代码: 全选

print -l ^2011.avi
先试试看你目前的设置能不能行(因为 zsh 的兼容性选项太多了,一开始必须先试试)。
没问题的话就执行:

代码: 全选

rm -r ^2011.avi
^ 表示求补集,A~B 是求差集。

如果你不使用 zsh 的话,最直接的方法就是装之 :em05
alober
帖子: 144
注册时间: 2010-07-13 17:04

Re: 怎么删除文件夹内除了某电影之外的其他文件

#3

帖子 alober » 2012-05-24 19:07

move 出来 rm 目录 再 move 回去行吗?
feiliang1983
帖子: 17
注册时间: 2007-04-20 0:10

Re: 怎么删除文件夹内除了某电影之外的其他文件

#4

帖子 feiliang1983 » 2012-05-26 23:07

一般来说rename不需要拷贝文件内容,如果你需要保留的文件位于上层目录且数目比较少的话,将目标文件重命名为隐藏文件,然后执行rm -rf 即可。
如果你需要保留目录结构的话,最好是创建一个隐藏的临时目录,发现有需要保留的文件就将其及其上层目录移到指定目录下;在处理完成后再移回来
Linux localhost.localdomain 2.6.18-92.1.6.el5 #1 SMP Wed Jun 25 13:49:24 EDT 2008 i686 i686 i386 GNU/Linux
头像
naturalaw
帖子: 1360
注册时间: 2011-09-06 22:04

Re: 怎么删除文件夹内除了某电影之外的其他文件

#5

帖子 naturalaw » 2012-05-27 13:50

如果只是一个文件,就不要自找麻烦了。直接把它挪走,删除完再挪回来
  • The eternal law
回复