批量更改某些文件的名称

批量更改某些文件的名称

可能的重复:
重命名带有前缀“Unix_”的文件夹中的所有文件
如何通过插入字符来重命名多个文件?

有没有办法更改某些文件的名称,例如将每个用户的名称附加到驻留在其主文件夹中的文件,如果他们移动到某个位置可以找到特定用户的文件?我使用的是CentOS 5.5

答案1

是的:

$ for file in *; do owner=$(stat -c %U "$file"); mv "$file" "${owner}_${file}"; done

您应该使用stat -c %U filename因为$USER扩展到当前用户,而不是文件的所有者。

文件的所有者可以从一个参数更改为另一个参数,因此rename基于 的解决方案可能必须应对/e修饰符替换运算符或者与一些调用结合起来stat。也就是说,我不认为这个问题与问题 13147因为前缀是动态的。

答案2

for f in * ; do mv "$f" $USER_"$f" ; done

答案3

for f in * ; do mv "$f" "$f"_$USER ; done

相关内容