使用拼合文件夹命令重命名重复文件

使用拼合文件夹命令重命名重复文件

此命令会将一个或多个文件夹的内容移动到父文件夹。但是,如果存在具有相同扩展名的相同文件名,则在移动过程中会有文件被覆盖。

find . - mindepth 2 -type f -exec mv "{}" . \; && fin d . - type d -empty -delete

如何修改此命令,以便任何具有重复文件名的文件都不会被覆盖,而是会附加 (1)、(2)、(3) 等?

答案1

有一个选项numbered叫做mv

  numbered, t
  make numbered backups

看看MV 手册页

您可以将其合并到您的一个衬垫中。

答案2

将此脚本复制到您希望所有文件所在的顶级目录,使其可执行并运行它:

#!/bin/bash

## Get a list of all files
list=$(find . -mindepth 2 -type f -print)
nr=1

## Move all files that are unique
find . -mindepth 2 -type f -print0 | while IFS= read -r -d '' file; do
    mv -n $file ./
done
list=$(find . -mindepth 2 -type f -print)

## Checking which files need to be renamed
while [[ $list != '' ]] ; do
   ##Remaming the un-moved files to unique names and move the renamed files
   find . -mindepth 2 -type f -print0 | while IFS= read -r -d '' file; do
       current_file=$(basename $file)
       mv -n $file "./${nr}${current_file}"
   done
   ## Incrementing counter to prefix to file name
   nr=$((nr+1))
   list=$(find . -mindepth 2 -type f -print)
done

相关内容