根据所有者重命名文件 - linux/Unix

根据所有者重命名文件 - linux/Unix

我的文件夹中有几个文件,它们都遵循以下命名约定:

 rs1.txt  
 rs2.txt
 rs3.txt

这些文件中有些是我自己制作的,有些是我同事制作的。我希望根据文件的所有者更改文件名。所以如果我们有

 rs1.txt  ME 
 rs2.txt  ME
 rs3.txt  HIM

我的文件将更改为:

 srs1.txt  ME 
 srs2.txt  ME
 rs3.txt  HIM

有什么可行的方法可以做到这一点吗?

答案1

find . -user ME -exec mv {} s{} \;

这将查找拥有的文件ME并对每个文件运行mv命令。这次,您不需要+末尾的选项(这通常是首选)。您可以根据需要向文件列表添加约束:-name rs*.txt,例如。

答案2

这是实现此目的的一种方法。这将使用用户“ME”重命名当前目录中的所有文件,并在名称前面添加“s”。

for f in *
do
    owner=$(ls -l | awk '{print $3}')
    if [ $owner = ME ];then
       mv $f s$f
    fi
done

答案3

USER="ME"
find . -maxdepth 1 -type f -user $USER -printf "%f\n" | xargs -I {}  mv {} s{}

答案4

1337}{4xx0|22|>0!7 1!|<3 7}{!5:

for i in `echo $(ls -n | grep \
  \`getent passwd |grep $USER| cut -d: -f3\` | 
  awk '{print $NF}')`; do 
      if [[ -f $i ]]; then echo mv \"$i\" \"s${i}\"; 
 fi ;done | sh

相关内容