如何移动除一个文件以外的所有文件?我正在寻找类似这样的东西:
'mv ~/Linux/Old/!Tux.png ~/Linux/New/'
在那里我将旧的东西移动到除了Tux.png
之外的新东西-folder。!-sign表示否定。有没有什么工具可以做这项工作?
发布于 2009-04-25 14:26:54
将以下内容放入您的.bashrc
shopt -s extglob
它扩展了正则表达式。然后,您可以通过以下方式移动所有文件:
mv !(fileOne) ~/path/newFolder
与其他命令相关的异常
请注意,在复制目录时,不能在线程Why extglob except breaking except condition?中注意到的名称中使用前向闪存
cp -r !(Backups.backupdb) /home/masi/Documents/
因此,在否定之前,Backups.backupdb/
是错误的,我也不会在移动目录时使用它,因为在其他命令和可能的其他异常中,可能会错误地使用globs。
发布于 2009-03-22 02:53:55
如果您使用bash并设置了extglob
外壳选项(通常是这种情况):
mv ~/Linux/Old/!(Tux.png) ~/Linux/New/
发布于 2009-03-22 04:06:20
我会使用传统的find & xargs方法:
find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png -print0 |
xargs -0 mv -t ~/Linux/New
-maxdepth 1
使其不会进行递归搜索。如果你只关心文件,你可以说-type f
。-mindepth 1
使其不将~/Linux/Old
路径本身包含在结果中。适用于任何文件名,包括包含嵌入换行符的文件名。
一条评论指出,mv选项可能是-t
的一个扩展。对于没有它的系统
find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png \
-exec mv '{}' ~/Linux/New \;
https://stackoverflow.com/questions/670460
复制相似问题