根据目录名称重命名文件

白翼

如何根据文件夹名称重命名多个文件夹中的.jpg文件?我还希望.jpg文件保留在各自的文件夹中而不要移动。文件夹名称没有空格。

因此,例如,如果文件夹名称为Red,那么我希望得到的文件名为:

Red000001.jpg
Red000002.jpg
Red000003.jpg

我有以下命令,但它会产生不希望的结果,将重命名的文件移出它们各自的文件夹,并使文件名“草率”:

start=$PWD;
for directory in *; do
  cd "$directory";
  for filename in *; do
    mv "$filename" ../"Folder $directory - $filename";
  done;
  cd "$start";
done
豪克

如果必须cd进出几个目录,则可以cd -改用有意义的目录,它会将您带到当前的最后一个工作目录。或者您使用pushd/ popd(在中bash)。

for directory in *; do
  pushd "$directory"
  index=1
  for filename in *; do
    extension="${filename##*.}"
    if [ "$filename" != "$extension" ]; then
      extension=".$extension"
    else
      # i.e. there is no dot in the file name
      extension=""
    fi
    target_filename="${directory}$(printf "%06d" "$index")${extension}"
    if [ -f "$target_filename" ]; then
      echo "File ${target_filename} exists; aborting."
      exit 3
    fi
    mv "$filename" "${target_filename}"
    ((index++))
  done
  popd
done

这段代码不能很好地处理名称冲突(如果已经有一个文件Red00004)。它只是检查并中止。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据目录名称重命名文件

如何使用目录名称重命名文件?

如何使用linux命令以其先前的目录名称重命名.html文件?

使用父目录名称重命名多个不同名称和扩展名的文件

根据文件夹名称重命名文件

根据文件夹名称重命名文件

如何使用其父目录的名称重命名文件?

根据当前名称重命名多个文件

根据目录名称中的多个字符重命名文件

根据另一个目录中文件的名称重命名目录中的文件

如何重命名所有文件以包含目录名称?

重命名部分目录名称?

Windows CMD-根据文件夹名称重命名文件

如何根据文本文件中的名称重命名文件?

如何根据文件夹名称重命名文件名?

根据子目录名称将文件从特定子目录复制到单个目录中,然后重命名

将子目录中的多个文件重命名为其目录名称

使用不断变化的名称重命名目录

批处理文件-根据父名称和(子)文件夹名称重命名文件

重命名目录名称中包含扩展名的树中文件

以递归方式将输出 PDF 文件重命名为子目录名称 Powershell

使用相同的名称重命名不同目录中的文件,因此每个文件都有唯一的(编号)名称

通过文件夹名称重命名文件

Perforce:如何重命名目录名称

如果文件夹名称重复,如何根据上传的文件自动重命名文件夹

使用Samba安装上的古怪名称重命名文件

使用备用BaseName查找(CSV)名称重命名文件

按名称重命名多个文件 Excel VBA

根据Spark Scala中的文件夹名称重命名和移动S3文件