我是个菜鸟,但我想出了这个脚本来执行以下操作:
我有一个名为“unrar”的文件夹,里面有未知文件夹名称的子文件夹,里面有 rar 文件。现在我进入 unknownsubfolder,找到 rar 文件并在 unknownsubfolder 中解压。之后,我找到新文件并将其重命名为 unknownsubfoldername。现在我抓取文件并将其移动到 ./unrar。
#!/bin/bash
cd /home/user/unrar/
for dir in /home/user/unrar/*;
do (cd "$dir" && find -name "*.rar" -execdir unrar e -r '{}' \;); done
echo "$(tput setaf 2)-> unrar done!$(tput sgr0)"
for dir in /home/user/unrar/*;
do (cd "$dir" && find -name "*.mkv" -exec mv '{}' "${PWD##*\/}.mkv" \;); done
for dir in /home/user/unrar/*;
do (cd "$dir" && find -name "*.mp4" -exec mv '{}' "${PWD##*\/}.mp4" \;); done
for dir in /home/user/unrar/*;
do (cd "$dir" && find -name "*.avi" -exec mv '{}' "${PWD##*\/}.avi" \;); done
cd /home/user/unrar
find -name "*.mkv" -exec mv '{}' /home/user/unrar \;
find -name "*.mp4" -exec mv '{}' /home/user/unrar \;
find -name "*.avi" -exec mv '{}' /home/user/unrar \;
这适用于大多数文件,但在某些情况下它不会
我想在 DIR 中找到 *.rar 并解压缩它。newfile.(.mkv|.avi|.mp4) 应重命名为 DIR(.mkv|.avi|.mp4) 并移至 ./unrar
这是我的文件结构。
./unrar/
- unknownsubfolder/
-file.rar
-file.r00
-....
- unknownsubfolder1/
- s01/
- file.rar
- file.r00
- ....
- s02/
- file.rar
- file.r00
- ....
- ....
如果是case1,解压“/unknownsubfolder/file.rar”,得到“x.mkv”。该文件从“x.mkv”重命名为“unknwonsubfolder.mkv”并移至“./unrar/unknownsubfolder.mkv”(与*.avi + *.mp4 相同)==perfekt
如果是 case2,在我的脚本中 unknownsubfolder/s01/file.rar 将是 unrard,但不会重命名为 s01.mkv 插入到 unknwonsubfolder1.mkv。(如果有更多类似 s02、s03、s04 ...)我总是在 ./unrar 中得到一个 unknownsubfolder.mkv 文件)==错误的输出
所以我想我有 3 个问题
我如何获得正确的 DIRname 来重命名文件?或者我如何输入 unknownsubfolder/s01 ....?
有没有办法从查找中排除一个词?有时“未知子文件夹”包含另一个名为“sample(.mkv|.avi|.mp4)”的文件夹+文件。我想排除它,以防止原始文件被示例文件覆盖。有时会发生。
我相信我可以结合一些代码,使其更短。有人可以解释一下吗?那么我如何将 mkv、avi 和 mp4 组合在一行中。
问候,袋熊
(编辑:为了更好地理解)