设为首页收藏本站

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 22|回复: 3

Linux递归进入二级目录改文件名为目录名

[复制链接]

5

主题

36

回帖

117

积分

注册会员

积分
117
发表于 2020-10-8 20:55:20 | 显示全部楼层 |阅读模式
本帖最后由 nako 于 2020-10-8 20:55 编辑

自己瞎研究了挺久。还是没能搞定。来请教各位,感谢!
最终目的是方便emby刮削,改文件名为目录名+S1E1类似格式。
目前卡在怎么获取文件的目录名和怎么递归进入对应目录。

这是我以前用的,但是之前目录名是fclone获得的,所以还差些代码。

[ol]
  • count=1;
  • for movie in `find . -maxdepth 1 -iname '*.mkv' -o -iname '*.mp4' -o -iname '*.avi' -type f `
  • do
  •   new="$cdname".S01.E$(printf "%02d" $count).${movie##*.}
  •   mv ""$movie"" "$new"
  •   let count++
  • done[/ol]复制代码

    这两个是找到来参考的,但是还是不会改。。。求助,谢谢~新手。。

    [ol]
  • #!/bin/bash
  • function changeName(){
  •     #new=`echo $1|sed 's/^/abc/g'`
  •     new=`echo $1|sed -r 's/abc(.*$)/\1/g'`
  •     echo changeName old: $1 new: $new
  •     if [ $1 != $new ];then
  •         mv $1 $new
  •     fi
  • }
  • function travFolder(){
  •     #echo "travFolder start"
  •     flist=`ls $1`
  •     cd $1
  •     for f in $flist
  •     do
  •         #echo traverse do $f
  •         local old=$f
  •         if test -d $f
  •         then
  •             #echo "traverse dir:${f}"
  •             travFolder $f
  •             #echo "traverse rename dir:${f}"
  •             changeName $old #rename folder
  •         else
  •             #echo "traverse file:$f"
  •             changeName $f
  •         fi
  •     done
  •     cd ../
  • }
  • param=$1
  • if [ -z "$1" ]
  •     then
  •     param="./"
  •     echo "empty string: $param"
  • else
  •     param=$1
  • fi
  • travFolder $param[/ol]复制代码

    [ol]
  • #!/bin/bash
  • function travFolder(){
  •     #echo "travFolder start"
  •     flist=`ls $1`
  •     cd $1
  •     for f in *.key; do mv "$f" "server.key"; done
  •     for f in *.crt; do mv "$f" "ssl.chain.crt"; done
  •     for f in $flist
  •     do
  •         #echo traverse do $f
  •         if test -d $f
  •         then
  •             #echo "traverse dir:${f}"
  •             travFolder $f
  •         fi
  •     done
  •     cd ../
  • }
  • param=$1
  • if [ -z "$1" ]
  •     then
  •     param="./"
  •     echo "empty string: $param"
  • else
  •     param=$1
  • fi
  • travFolder $param[/ol]复制代码

  • 回复

    使用道具 举报

    149

    主题

    6786

    回帖

    1万

    积分

    论坛元老

    积分
    14097
    发表于 2020-10-8 20:56:48 | 显示全部楼层
    略顶一下

    回复

    使用道具 举报

    5

    主题

    36

    回帖

    117

    积分

    注册会员

    积分
    117
     楼主| 发表于 2020-10-8 23:26:25 | 显示全部楼层
    技术不到家,看不懂
    回复

    使用道具 举报

    39

    主题

    1377

    回帖

    2961

    积分

    金牌会员

    积分
    2961
    发表于 2020-10-9 00:17:17 | 显示全部楼层

    h20 发表于 2020-10-9 00:22

    for movie in `xxx`

    你要这样子写你就要有不需要调试的觉悟

    谢谢,用rename也可以,只要能顺序进入二级目录里,剩下就简单了。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2026-3-4 18:17 , Processed in 0.034155 second(s), 3 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表