在没有父路径的情况下循环浏览目录和zip特定文件夹



我正在尝试制作一个bash脚本,在目录中的所有文件夹中循环,并在没有所有路径的情况下单独压缩我想要的文件夹,并选择压缩主题的位置。

#!/bin/bash
for dir in /MyPersonalFolder/*/*/WhatIWantFolder
do   
folder_number=$(basename ${dir%/*}) ### basename get the name of this folder [*] 'folder have numbers' /MyPersonalFolder/*/[*]/WhatIWantFolder
sudo tar -cf "${folder_number}-WhatIWantFolder".tar.gz --absolute-names "$dir"   
mkdir -p ./backup-theme/ && sudo mv "${folder_number}-theme".tar.gz $_ ### I use this to move zipped folder to specific directory if i can choose where to zip file in the zip command line it's better
done

我可以压缩我想要的文件夹,但输出的压缩文件附带以下内容:

/MyPersonalFolder/0001/0001/WhatIWantFolder

但我需要的是输出具有以下路径的文件:

0001/
|___WhatIWantFolder/

我试图改变"$dir";在这条线上

sudo tar -cf "${folder_number}-WhatIWantFolder".tar.gz --absolute-names "$dir"   

基本名称为${dir%/*}

sudo tar -cf "${folder_number}-WhatIWantFolder".tar.gz --absolute-names "basename ${dir%/*}"   

tar没有找到文件夹它附带错误

tar: e0001: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

在使用--cd选项运行tar时,您可以cd到另一个目录。

#!/bin/bash
for dir in MyPersonalFolder/*/*/WhatIWantFolder; do
parent="${dir%/*/*}"
subdir="${dir#*/*/*}"
outfile="backup-theme/${subdir///-}.tar.gz"
tar --cd "$parent" -cvzf "$outfile" "$subdir" 
done

tar文件的目录结构如下所示:

tar -tf backup-theme/0001-WhatIWantFolder.tar.gz
0001/WhatIWantFolder/
0001/WhatIWantFolder/f1

最新更新