簡體   English   中英

bash腳本可按照子目錄中的模式重命名並進行復制

[英]bash script to rename following a pattern in subdirectories and make a copy

我正在嘗試對所有目錄中的某些文件進行迭代重命名。

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

重命名結束后,在homefolder的另一個文件夾(例如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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM