如何拆分文件路径以将各个子文件夹提取到变量中? (Ubuntu Bash)

时间:2013-09-20 01:01:01

标签: bash

我需要Ubuntu Precise bash脚本的帮助。

我在各种文件夹中有几个tiff文件

masterFOlder--masterSub1 --masterSub1-1 --file1.tif
                         |--masterSub1-2 --masterSub1-2-1 --file2.tif 
          | 
          |--masterSub2  --masterSub1-2 ..... 

我需要运行一个Imagemagick命令并将它们保存到新文件夹“转换”,同时保留子文件夹树,即新树将

converted --masterSub1 --masterSub1-1 --file1.png
                         |--masterSub1-2 --masterSub1-2-1 --file2.png 
          | 
          |--masterSub2  --masterSub1-2 ..... 

如何将文件路径拆分为文件夹,替换第一个文件夹(要转换的masterFOlder)并重新创建新的文件路径?

感谢所有人阅读此内容。

1 个答案:

答案 0 :(得分:1)

此脚本应该有效。

#!/bin/bash

shopt -s extglob && [[ $# -eq 2 && -n $1 && -n $2 ]] || exit

MASTERFOLDER=${1%%+(/)}/
CONVERTFOLDER=$2

OFFSET=${#MASTERFOLDER}

while read -r FILE; do
    CPATH=${FILE:OFFSET}
    CPATH=${CONVERTFOLDER}/${CPATH%.???}.png
    CDIR=${CPATH%/*}
    echo "Converting $FILE to $CPATH."
    [[ -d $CDIR ]] || mkdir -p "$CDIR" && echo convert "$FILE" "$CPATH" || echo "Conversion failed."
done < <(exec find "${MASTERFOLDER}" -mindepth 1 -type f -iname '*.tif')

只需将echo convert "$FILE" "$CPATH"替换为您使用的实际命令,然后运行bash script.sh masterfolder convertedfolder