下面的命令移动每个以* string结尾的隐藏/普通文件。或_之前。
mv {.,}*[!._]string /destination
如何在上述命令中排除移动所有目录?
答案 0 :(得分: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
部分之后)。
答案 1 :(得分:0)
怎么样:
for file in {.,}*[!._]string; do test -f "$file" && mv "$file" /destination; done
与[!._]
一起使用时,{.,}
glob实际上在什么shell中?你可能最好避免使用{}
表示法并执行:
for file in .*[!._]string *[!._]string; do ... ; done