目录中的
~/domains/annejulie.blue-world.pl/git
我想获取除 annejulie.blue-world.pl.git 目录之外的所有文件和目录,并将它们移动到该目录中( annejulie.blue-world.pl.git )
如何使用查找和 grep 命令在终端中执行此操作?有可能吗?
答案 0 :(得分:7)
首先在终端中执行以下命令。这扩展了正则表达式。
shopt -s extglob
现在您可以执行以下mv命令
mv !(<file/dir not to be moved>) <Path to dest>
例如,如果你在〜/ Test并且你需要将除〜/ Test / Dest之外的所有内容移动到〜/ Test / Dest,你可以按照下面给出的那样执行它,假设你在〜/ Test
mv !(Dest) ~/Test/Dest
答案 1 :(得分:2)
使用find
,假设您find
支持-mindepth
和-maxdepth
。
find . -mindepth 1 -maxdepth 1 \! -name annejulie.blue-world.pl.git -exec echo mv {} annejulie.blue-word.pl.git \;
这不执行移动,而是在终端上打印它将执行的操作。如果您对结果感到满意,请移除echo
字后的-exec
。
如果您的mv
支持-t
选项,则可以使用此选项:
find . -mindepth 1 -maxdepth 1 \! -name annejulie.blue-world.pl.git -exec echo mv -t annejulie.blue-word.pl.git {} +
如果您的find
不支持-mindepth
和-maxdepth
,则此POSIX兼容应执行以下操作:
find \( \! -name '.' -type d -prune -o \! -type d \) \! -name annejulie.blue-world.pl.git -exec echo mv {} annejulie.blue-word.pl.git \;
它有效,但它真的很难看。
当然,最好的选择是使用
mv -- * annejulie.blue-world.pl.git
让mv
抱怨它无法移动到自身的子目录中。
答案 2 :(得分:0)
您可以使用find
:
cd ~/domains/annejulie.blue-world.pl/git
find . -and -not -path './annejulie.blue-world.pl.git*' -exec mv {} ./annejulie.blue-world.pl.git \;