-1

下面的命令移动每个以 *string 结尾但不带 . 或 _ 在它之前。

 mv {.,}*[!._]string /destination

我怎样才能排除移动上述命令中的所有目录?

4

2 回答 2

1

尝试

find /WHERE/TO/FIND -name '*STRING' \( ! -name '*_STRING' -o ! -name '*.STRING' \) -type f -exec mv \{\} /WHERE/TO/MOVE \;

请注意,如果您只想从/WHERE/TO/FIND目录中移动每个文件,您应该添加-maxdepth 1(例如在该-type f部分之后)。

于 2013-02-08T08:17:33.010 回答
0

怎么样:

for file in {.,}*[!._]string; do test -f "$file" && mv "$file" /destination; done

与 一起使用时 glob在什么外壳中[!._]实际工作{.,}?您最好避免使用该{}符号并执行以下操作:

for file in .*[!._]string *[!._]string; do ... ; done
于 2013-02-08T14:39:00.320 回答