gpt4 book ai didi

linux - bash 脚本按照子目录中的模式重命名并制作副本

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:07:50 24 4
gpt4 key购买 nike

我正在尝试对所有目录中的某些文件进行迭代重命名。

homefolder/folder1/ouput/XXXXX_ab.png
homefolder/folder1/ouput/XXXXX_abcdefg.png
homefolder/folder2/ouput/XXXXX_ab.png
homefolder/folder2/ouput/XXXXX_abcdefg.png
homefolder/folder3/ouput/XXXXX_ab.png
homefolder/folder3/ouput/XXXXX_abcdefg.png
...
homefolder/folder500/ouput/XXXXX_ab.png
homefolder/folder500/ouput/XXXXX_abcdefg.png

我想获取文件夹名称(例如。folder1folder2、... folder500)并将其传递给两个 png文件作为前缀并删除每个文件开头的那五个 X。这些 png 文件的图案是:

XXXXX_ab.png
XXXXX_abcdrfg.png

因此每个子目录只有前五个字符不同,将被其父目录的名称,即那些文件夹名称替换。

结果将是:

homefolder/folder1/ouput/folder1_ab.png
homefolder/folder1/ouput/folder1_abcdefg.png
homefolder/folder2/ouput/folder2_ab.png
homefolder/folder2/ouput/folder2_abcdefg.png
homefolder/folder3/ouput/folder3_ab.png
homefolder/folder3/ouput/folder3_abcdefg.png
...
homefolder/folder500/ouput/folder500_ab.png
homefolder/folder500/ouput/folder500_abcdefg.png

在重命名结束时,在主文件夹的另一个文件夹中创建这两个新重命名文件的副本,例如 all_png_folder

find . -iname "*_ab.png" -exec rename _ab.png folder1_ab.png '{}' \;
find . -name "*_ab.png" -exec cp {} ./all_png_folder \;

最佳答案

这是一个开始,最后的复制应该是一个微不足道的添加。

#!/usr/bin/env bash

files=$(find . -type f -name "*_ab.png" -or -name "*_abcdefg.png")

for file in $files; do
foldername=$(cut -d '/' -f 2 <<< $file)

# The name of the png-file minus the leading xxxxxx
pngfile=$(basename "$file" | cut -d '_' -f 2)
destinationdir=$(dirname "$file")
mv $file "$destinationdir/$foldername"'_'"$pngfile"
done

演示

$ tree        
.
├── folder1
│   └── ouput
│   ├── foo_bar.png
│   ├── xxxxx_abcdefg.png
│   └── xxxxx_ab.png
├── folder2
│   └── ouput
│   ├── xxxxx_abcdefg.png
│   └── xxxxx_ab.png
└── rename.sh

4 directories, 6 files
$ ./rename.sh
$ tree
.
├── folder1
│   └── ouput
│   ├── folder1_abcdefg.png
│   ├── folder1_ab.png
│   └── foo_bar.png
├── folder2
│   └── ouput
│   ├── folder2_abcdefg.png
│   └── folder2_ab.png
└── rename.sh

关于linux - bash 脚本按照子目录中的模式重命名并制作副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43017912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com