Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash“;用于“文件”中的文件;例外_Bash_Shell - Fatal编程技术网

Bash“;用于“文件”中的文件;例外

Bash“;用于“文件”中的文件;例外,bash,shell,Bash,Shell,我知道了 for file in *; do any command done 我想做的是在“for file in*;do”中添加一个异常 有什么想法吗?例如,你有文件 $ ls -1 ./ ./M2U0001.MPG ./M2U0180.MPG ./text 异常文件是M2U0180.MPG $> filename="M2U0180.MPG" 及 完成奇怪的解决方案:)如果要跳过具有特定扩展名的文件,例如“.pl”,可以执行以下操作: for file in * do

我知道了

for file in *; do
    any command
done
我想做的是在“for file in*;do”中添加一个异常


有什么想法吗?

例如,你有文件

$ ls -1 ./
./M2U0001.MPG
./M2U0180.MPG
./text
异常文件是M2U0180.MPG

$> filename="M2U0180.MPG"


完成奇怪的解决方案:)

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

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

一种方法是使用if语句(或者只使用grep-v ls cmd)循环检查文件名:


使用bash的扩展globbing

shopt -s extglob
for f in !(excluded-file); do echo "$f"; done
一个简单的解决方案: 下面的代码段将打印pwd中扩展名为.py的所有文件

for i in * ;do if [[ $i == *.py ]];then echo "$i" fi done 因为我在*;做 如果[[$i==*.py]];然后 回音“$i” fi 完成
“异常”是指要排除一个或多个文件与
*
匹配吗?如果是这样,您可以在循环中使用
If
语句来避免对特定文件执行操作。异常是什么意思<代码>如果[[$file!=异常]];然后;fi?工作起来很有魅力。非常感谢。这里的即兴表演很好。非常感谢。这就是我要找的,一个扩展检查器。谢谢
shopt -s extglob
for f in !(excluded-file); do echo "$f"; done
for i in * ;do if [[ $i == *.py ]];then echo "$i" fi done