我的文件夹中有几个文件,它们都遵循以下命名约定:
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