gpt4 book ai didi

linux - 列出文件夹但如果文件夹与 Bash 中的列表匹配则排除

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:52 26 4
gpt4 key购买 nike

我是第一次玩 Bash。

此脚本将列出所有文件夹,但我想将其修改为尽可能不列出某个文件夹。

工作:

_list_banners () {
for f in * ; do [ -d "$f" ] && echo ${_handle_banner_type}${_handle_message} $f ; done
}

这有效并列出了文件夹,但我想从列表中排除例如文件夹 MASTER

尝试:

_list_banners () {
for f in * ;
if [ $f != "MASTER" ]; then
do [ -d "$f" ] && echo ${_handle_banner_type}${_handle_message} $f
fi
; done
}

但是当我运行它时,我得到以下错误而不是我的文件列表:

$ bash myscript
myscript: line 3: syntax error near unexpected token `if'
myscript: line 3: ` if [ $f != "MASTER" ]; then'

最佳答案

您可以将目录检查和排除都移到您的 glob 中(需要 shopt -s extglob ,并且 shopt -s nullglob 是避免在没有匹配项时出现意外行为的好主意):

shopt -s extglob
shopt -s nullglob

_list_banners () {
for f in !(MASTER)/; do
echo "${_handle_banner_type}${_handle_message} $f"
done
}

!(MASTER)是一个不包括 MASTER 的 glob , 并附加 /只返回目录。

如果您只需要没有尾部斜杠的目录名称,您可以使用 ${f%/}而不仅仅是 $fecho 上行。

关于linux - 列出文件夹但如果文件夹与 Bash 中的列表匹配则排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48632436/

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