下面的命令移动每个以 *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