我有一个目录 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
在目录上运行脚本之前,请先备份目录。请...
要创建和使用脚本文件,请按照以下步骤操作:
通过在终端中运行以下命令,在主目录中创建并编辑脚本文件:
nano ~/my_script.sh
将以下代码复制并粘贴到编辑器中,并将其更改
/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
保存脚本文件并按Ctrl+X然后按退出编辑器Y。
通过在终端中运行以下命令使脚本文件可执行:
chmod +x ~/my_script.sh
通过在终端中运行以下命令来运行脚本:
bash ~/my_script.sh
完毕
祝你好运