在文件夹,子文件夹和多个文件中递归查找和重命名

Megasa3

我是shellscript的新手,尝试执行自己需要的操作时遇到了一些问题...

我想“优化”我所有的* .png图像并找到它,所以我按如下方式进行了重击:

#!/bin/bash    
 pngnq -vf -s1 *.png    
 rename -nq8.png .png *-nq8*     
 optipng -o7 *.png

这是做什么的:

  • pngnq -vf -s1 *.png 以* png ofr为例Image.png并创建了一个名为Image-nq8.png的副本,该副本是经过优化的
  • rename -nq8.png .png *-nq8*使Image-nq8.png变为Image.png,因此您具有与以前相同的但经过优化的(因此您可以在文件夹中拥有与优化之前相同的文件夹)<=非常重要!
  • optipng -o7 *.png 在不进行任何复制的情况下对Images.png进行了另一个优化。

但是现在我有一个问题:

如果我按顺序在控制台中编写每一行,那么它可以在我所在的文件夹中正常运行,但是现在我需要自动且递归地进行操作。我解释一下我的情况:

注意:我说的是文件夹作为目录

我有一个名为ImagesFolder的文件夹,里面还有其他带有* .png的文件夹,我想在ImagesFolder的每个子文件夹中运行此bash,但我不知道该怎么做(因为我说过,我在Unix和shellscripts等),以及我在互联网上发现并尝试的内容均无效或完全混乱...

为了更好地理解我所拥有的是:

ImagesFolder
  |-Folder1
  |     |- Folder12
  |     |      |-20 images here
  |     |- Folder13
  |     |      |- 10 images more here
  |     |-  _Folder <- I have some folder names that start with '_'
  |     |- 5 images here 
  |-more images and folders and subfoldrs

这是结构,我希望脚本从ImagesFolder运行。

我尝试了其中的for和find,并且在控制台中使用find调用了脚本...尝试将我在堆栈中找到的一些示例也应用了,但一无所获...可能是因为我真的不知道该怎么做这项工作我不能那样做。希望您能帮助我解决这个问题。

太感谢了!

编辑:要运行脚本,我必须转到ImageFolder,打开控制台,然后将chmod u+x name_of_my_script其运行到子文件夹中可能会出现问题吗?如果是,您能告诉我如何解决吗?

AB

一个bash脚本:

创建一个新文件find_and_rename并添加以下行:

  • 与版本 replace

    #!/bin/bash
    shopt -s globstar
    for f in **/*png; do 
        pngnq -vf -s1 "$f"
    
        # Uncomment the line below for a test run
        # rename -v -n 's/^(.*)\-nq8(.*)/$1$2/' "$f"
    
        # Comment the line below out for a test run
        rename -v 's/^(.*)\-nq8(.*)/$1$2/' "$f"
    
        optipng -o7 "$f"
    done
    
  • 与版本 mv

    #!/bin/bash
    shopt -s globstar
    for f in **/*png; do 
        pngnq -vf -s1 "$f"
    
        # Uncomment the line below for a test run
        # echo "$f  => ${f//-nq8/}"
    
        # Comment the line below out for a test run
        mv "$f" "${f//-nq8/}"
    
        optipng -o7 "$f"
    done
    

使用以下命令使文件可执行:

chmod +x find_and_rename

进入您的文件夹ImagesFolder

在此文件夹中启动脚本。

<path_to_script>/find_and_rename

示例(不带pngnqoptipng

$ find . -type f -name "*.png"
./Image-nq8.png
./sub/Image-nq8.png
./Image2-nq8.png

$ ./find_and_rename 
Image2-nq8.png renamed as Image2.png
Image-nq8.png renamed as Image.png
sub/Image-nq8.png renamed as sub/Image.png

$ find . -type f -name "*.png"
./Image2.png
./sub/Image.png
./Image.png

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在文件夹、子文件夹和多个文件中递归查找

来自分类Dev

Python脚本递归重命名文件夹和子文件夹中的所有文件

来自分类Dev

批。批量重命名文件夹和所有子文件夹中的文件

来自分类Dev

Powershell文件和子文件夹文件重命名

来自分类Dev

使用列表重命名文件夹和子文件夹中的文件-Bash Script / Unix

来自分类Dev

如何使用批处理脚本重命名多个文件夹和子文件?

来自分类Dev

递归重命名文件夹/目录

来自分类Dev

递归重命名文件夹

来自分类Dev

递归清除其中没有文件的文件夹中的所有文件夹和子文件夹

来自分类Dev

如何递归地仅复制文件夹和子文件夹中的文件?

来自分类Dev

用子文件夹递归重命名图像集合

来自分类Dev

重命名文件夹中的文件

来自分类Dev

重命名文件夹中的文件

来自分类Dev

查找文件夹和子文件夹中的文件数?

来自分类Dev

查找文件夹和子文件夹中的文件数?

来自分类Dev

在文件夹和子文件夹中查找文件

来自分类Dev

如何读取Bash Shell中多个文件夹和子文件夹中的文件

来自分类Dev

重命名不同子文件夹中的文件

来自分类Dev

使用R重命名文件夹中的多个文件

来自分类Dev

用于存档文件夹和重命名文件的脚本

来自分类Dev

Apple Script - 搜索文件夹和重命名文件

来自分类Dev

搜索文件夹和子文件夹python中的多个文件

来自分类Dev

LibreOffice:以递归方式转换文件夹和子文件夹中的文档

来自分类Dev

递归地重命名所有子文件夹中的文件

来自分类Dev

使用子文件夹标签重命名子文件夹中的文件

来自分类Dev

在python中查找文件夹和子文件夹

来自分类Dev

在子文件夹中查找和验证内容

来自分类Dev

在Python中重命名文件夹

来自分类Dev

递归更改文件夹和子文件夹中的文件名,而无需更改文件路径

Related 相关文章

  1. 1

    在文件夹、子文件夹和多个文件中递归查找

  2. 2

    Python脚本递归重命名文件夹和子文件夹中的所有文件

  3. 3

    批。批量重命名文件夹和所有子文件夹中的文件

  4. 4

    Powershell文件和子文件夹文件重命名

  5. 5

    使用列表重命名文件夹和子文件夹中的文件-Bash Script / Unix

  6. 6

    如何使用批处理脚本重命名多个文件夹和子文件?

  7. 7

    递归重命名文件夹/目录

  8. 8

    递归重命名文件夹

  9. 9

    递归清除其中没有文件的文件夹中的所有文件夹和子文件夹

  10. 10

    如何递归地仅复制文件夹和子文件夹中的文件?

  11. 11

    用子文件夹递归重命名图像集合

  12. 12

    重命名文件夹中的文件

  13. 13

    重命名文件夹中的文件

  14. 14

    查找文件夹和子文件夹中的文件数?

  15. 15

    查找文件夹和子文件夹中的文件数?

  16. 16

    在文件夹和子文件夹中查找文件

  17. 17

    如何读取Bash Shell中多个文件夹和子文件夹中的文件

  18. 18

    重命名不同子文件夹中的文件

  19. 19

    使用R重命名文件夹中的多个文件

  20. 20

    用于存档文件夹和重命名文件的脚本

  21. 21

    Apple Script - 搜索文件夹和重命名文件

  22. 22

    搜索文件夹和子文件夹python中的多个文件

  23. 23

    LibreOffice:以递归方式转换文件夹和子文件夹中的文档

  24. 24

    递归地重命名所有子文件夹中的文件

  25. 25

    使用子文件夹标签重命名子文件夹中的文件

  26. 26

    在python中查找文件夹和子文件夹

  27. 27

    在子文件夹中查找和验证内容

  28. 28

    在Python中重命名文件夹

  29. 29

    递归更改文件夹和子文件夹中的文件名,而无需更改文件路径

热门标签

归档