我在一个文件夹中有1000+文件,我想使用for循环(在Shell脚本中)循环遍历所有文件,除了一些具有特定前缀的特定文件。
例如:
exposureRawFilePath="/aa/bb/*.psv.gz"
sizmekfiles="aa/bb/abcd*.psv.gz"
for dr in $exposureRawFilePath ; do
for dr not in $sizmekfiles ; do
我在上面尝试了这些命令,但它们没有用。你能帮帮我吗?
答案 0 :(得分:1)
for file in /aa/bb/*.psv.gz; do
[[ $file == /aa/bb/abcd* ]] && continue
echo "$file"
done
或extglob:
shopt -s extglob # need for bash if not already enabled, ksh enable it by default
for file in /aa/bb/!(abcd*); do
echo "$file"
done
甚至是sh:
for file in *; do
case $file in
/aa/bb/abcd*.psv.gz) continue ;;
*) echo "$file" ;;
esac
done
答案 1 :(得分:0)
您尚未在问题中标记bash
,因此这是POSIX
方式使用case
完成工作:
for f in /aa/bb/*.psv.gz; do
case "$f" in
/aa/bb/abcd*.psv.gz)
continue;;
*)
echo "processing $f";;
esac
done