我得到了这个
for file in *; do
any command
done
我想要做的是在“for file in *; do”中添加一个例外。
有什么想法吗?
答案 0 :(得分:7)
如果您想跳过具有特定扩展名的文件,例如“.pl”,您可以这样做:
for file in *
do
[ "${file##*.}" != "pl" ] && echo $file
done
答案 1 :(得分:2)
我认为你要问的一种方法是循环并用if语句检查文件名(或者只是grep -v ls cmd):
for file in `ls`; do
if [ "$file" == "something" ]; then
# do something
else
# something else
fi
done
答案 2 :(得分:1)
例如,您有文件
$ ls -1 ./
./M2U0001.MPG
./M2U0180.MPG
./text
异常文件是M2U0180.MPG
$> filename="M2U0180.MPG"
和
$> for file in $(ls -1 ./* | grep --invert-match "${filename}" ); do echo $file; done
./M2U0001.MPG
./text
奇怪的解决方案:)
答案 3 :(得分:1)
使用bash的扩展globbing
shopt -s extglob
for f in !(excluded-file); do echo "$f"; done
答案 4 :(得分:0)
一个简单的解决方案: 以下代码段将打印pwd中具有.py扩展名
的所有文件for i in * ;do if [[ $i == *.py ]];then echo "$i" fi done