Movies在目录上运行脚本之前,请先备份目录。请...

Movies在目录上运行脚本之前,请先备份目录。请...

我有一个目录 Movies,其中包含许多子目录 [MovieName]。其中一些 [MovieName] 子目录有一个随机命名的子目录,其中包含 VIDEO_TS 子目录。如果我找到 VIDEO_TS,我想将其移动到父目录的 [MovieName] 父级并删除当前随机命名的父目录。如果我在 2 层以下找不到 VIDEO_TS,我想删除 [MovieName]。澄清一下...

Argo
  |-- ASDFJK
         |-- VIDEO_TS 
Birdcage
  |-- B7YEQ
         |-- [a few files - no VIDEO_TS] 

由于 Argo 有一个 VIDEO_TS 子目录,因此将其移动到 Argo 并删除 ASDFJK。由于 Birdcage 没有 VIDEO_TS,因此删除 Birdcage。我尝试了各种方法,使用 find 和 -exec 和 {},但最多只能将 VIDEO_TS 上移一级(这还留下大量清理工作要做)。

答案1

以下脚本应该可以完成工作。尝试一下,当你对结果满意时,删除注释#以执行实际工作。

Movies在目录上运行脚本之前,请先备份目录。请...

要创建和使用脚本文件,请按照以下步骤操作:

  1. 通过在终端中运行以下命令,在主目录中创建并编辑脚本文件:

    nano ~/my_script.sh

  2. 将以下代码复制并粘贴到编辑器中,并将其更改/full/path/to/movies/为目录的完整路径Movies

#!/bin/bash

path="/full/path/to/movies/"

for directory in $(find "$path" -maxdepth 3 -mindepth 3 -type d -name "VIDEO_TS")
do

        parent=$(dirname $(dirname "$directory"))

        parent2=$(dirname "$directory")

        echo "$directory" " Will be copied to " " $parent "
        echo "$parent2" " Will be deleted!"

#       cp -Rp "$directory" "$parent"

#       rm -rf "$parent2"

done


for directory in $(find "$path" -maxdepth 3 -mindepth 3 -type d ! -name "VIDEO_TS")
do

        parent=$(dirname $(dirname "$directory"))

        echo "$parent" " Will be deleted!"

#       rm -rf "$parent" 

done
  1. 保存脚本文件并按Ctrl+X然后按退出编辑器Y

  2. 通过在终端中运行以下命令使脚本文件可执行:

    chmod +x ~/my_script.sh

  3. 通过在终端中运行以下命令来运行脚本:

    bash ~/my_script.sh

完毕

祝你好运

相关内容