gpt4 book ai didi

bash - 将文件名与 bash 中的字符串进行比较

转载 作者:行者123 更新时间:2023-11-29 09:50:25 25 4
gpt4 key购买 nike

我正在创建一个备份功能来复制具有特定扩展名的所有文件。

files() 没有找到时返回 '*' '+' './'文件结果,所以我试图避免无效的 cp [* | + | ./]/backup 带有 if 但它只适用于 *

function backupByExt {
# $1 = extension $2 = searchPaths $3 = backPath
ext=$1
sp=$2
bp=$3
files=( "$sp" + *."$ext" )
# printf 'Backing up %s files: %d\n' "$ext" "${#files[@]}"
# loop over all the files having the current extension
for f in "${files[@]}"
do
# printf 'File: %s bp: %s\n' "$f" "$bp"
if [ "$f" != "*" ] && [ "$f" != "+" ] && [ "$f" != "./" ]; then
cp "$f" "$bp"
fi
done
}

最佳答案

files=( "$sp" + *."$ext" )

看起来不对; + 将成为数组的第二个元素。你可能想要

files=( "$sp"/*."$ext" )

!= * 的检查可以通过 shopt -s nullglob 省略。

case 语句可能比您的 || 链(应该是 &&)更具可读性:

case $f in
./|\+|\*) ;;
*) cp "$f" "$bp/" ;;
esac

关于bash - 将文件名与 bash 中的字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49222093/

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