linux - 用于重命名和重新定位文件的 Shell 脚本

标签 linux file shell directory

我正在做某事,需要解决以下问题。我给出了我的问题的类似版本。

假设我们有一个music目录,其中有200个目录对应不同的电影。每个电影目录中都有一些音乐文件。

现在,假设文件 music.mp3 位于文件夹 movie.mp3 中。我想制作一个 shell 脚本,将文件重命名为 movie_music.mp3 并将其放入我提到的某个文件夹中。基本上,子目录中的所有文件都将被重命名并放入新目录中。

有什么解决办法吗?

最佳答案

此脚本接收两个参数:源文件夹和目标文件夹。它将把源目录下任何目录下的每个文件移动到新目录并使用新文件名:

#!/bin.sh
echo "Moving from $1 to $2"
for dir in "$1"/*; do
  if [ -d "$dir" ]; then
    for file in "$dir"/*; do
      if [ -f "$file" ]; then
        echo "${file} -> $2/`basename "$dir"`_`basename "${file}"`"
        mv "${file}" "$2"/`basename "$dir"`_`basename "${file}"`
      fi
    done
  fi
done

这是一个示例:

bash move.sh dir dir2
Moving from dir to dir2
dir/d1/f1 -> dir2/d1_f1
dir/d1/f2 -> dir2/d1_f2
dir/d2/f1 -> dir2/d2_f1
dir/d2/f2 -> dir2/d2_f2

关于linux - 用于重命名和重新定位文件的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3853113/

相关文章:

c++ - Linux 与 Windows,C++ 运行时读取 CSV 文件的性能差异

java - Properties.contains() 的意外输出

c - 不理解自定义 C shell 的逻辑

php - UTF-8贯穿始终

linux - Puppet:评估资源声明时出错,未知资源类型: 'ini_setting'

具有相对前缀的 linux diff 工具输出

linux - 检查文件系统百分比并使用 case 命令运行脚本

递归遍历文件的shell脚本

将字符数组复制到文本文件中

bash - shell : How to print progressbar