下面的命令移动每个以 *string 结尾但不带 . 或 _ 在它之前。
mv {.,}*[!._]string /destination
我怎样才能排除移动上述命令中的所有目录?
下面的命令移动每个以 *string 结尾但不带 . 或 _ 在它之前。
mv {.,}*[!._]string /destination
我怎样才能排除移动上述命令中的所有目录?
尝试
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
部分之后)。
怎么样:
for file in {.,}*[!._]string; do test -f "$file" && mv "$file" /destination; done
与 一起使用时 glob在什么外壳中[!._]
实际工作{.,}
?您最好避免使用该{}
符号并执行以下操作:
for file in .*[!._]string *[!._]string; do ... ; done