Bash“用于文件输入”例外

发布于 2024-12-15 14:34:01 字数 133 浏览 0 评论 0原文

我明白了

for file in *; do
    any command
done

我想做的是向“for file in *; do”添加一个例外。

有什么想法吗?

I got this

for file in *; do
    any command
done

What I want to do is add an exception to the "for file in *; do".

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

赴月观长安 2024-12-22 14:34:01

如果您想跳过具有特定扩展名的文件,例如“.pl”,您可以执行以下操作:

for file in *
do
    [ "${file##*.}" != "pl" ] && echo $file
done

If you wanted to skip files with a particular extension, for example, ".pl", you could do:

for file in *
do
    [ "${file##*.}" != "pl" ] && echo $file
done
在你怀里撒娇 2024-12-22 14:34:01

我认为您所要求的一种方法是循环并使用 if 语句检查文件名(或者只是 grep -v ls cmd):

for file in `ls`; do
    if [ "$file" == "something" ]; then
        # do something
    else
        # something else
    fi
done

One way to do what I think you are asking is to loop through and check a file name with a if statement (or just grep -v the ls cmd):

for file in `ls`; do
    if [ "$file" == "something" ]; then
        # do something
    else
        # something else
    fi
done
甜`诱少女 2024-12-22 14:34:01

例如,您的文件

$ ls -1 ./
./M2U0001.MPG
./M2U0180.MPG
./text

异常文件是 M2U0180.MPG

gt; filename="M2U0180.MPG"

并且

gt; for file in $(ls -1 ./* | grep --invert-match "${filename}" ); do echo $file; done
./M2U0001.MPG
./text

完成了奇怪的解决方案:)

For example, you have files

$ ls -1 ./
./M2U0001.MPG
./M2U0180.MPG
./text

Exception file is M2U0180.MPG

gt; filename="M2U0180.MPG"

And

gt; for file in $(ls -1 ./* | grep --invert-match "${filename}" ); do echo $file; done
./M2U0001.MPG
./text

Weird solution done :)

奶茶白久 2024-12-22 14:34:01

使用 bash 的扩展通配符

shopt -s extglob
for f in !(excluded-file); do echo "$f"; done

use bash's extended globbing

shopt -s extglob
for f in !(excluded-file); do echo "$f"; done
梦回梦里 2024-12-22 14:34:01

一个简单的解决方案:
以下代码片段将打印 pwd 中具有 .py 扩展名的所有文件

for i in * ;do
        if  [[ $i == *.py ]];then
                    echo "$i"
        fi
done

A simple solution :
The following code snippet will print all the files in the pwd , that have a .py extension

for i in * ;do
        if  [[ $i == *.py ]];then
                    echo "$i"
        fi
done
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文