我有几个文件夹,例如 name1@domain.com、name2@domain.com、name3@domain.com。我想将它们重命名为 name1、name2、name3 等。我发现如果它们反之亦然,即 name1、name2、name3 我可以通过运行将其移动到 name1@domain.com
find . -type d -name "*" -depth 1 | while read d; do mv "$d" "$d@domain.com"; done
但是我该如何做相反的事情?name1@domain.com ==> name1
使用诸如 Bash 之类的外壳:
for d in ./*@*/
循环遍历当前目录中名称包含“@”的所有目录。${d%@*}
是一个参数扩展,给出d
变量的值减去最后一个“@”以及后面的任何内容。您可以使其更具限制性,例如