我正在尝试制作一个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