试图从ls命令中删除stderr

0 bash shell

所以我遇到了管道ls命令的问题grep.我基本上ls -l在一个文件中的for循环中运行,其中一些文件丢失了,所以它给了我No file or directory found三条线的错误.我无法弄清楚的是如何只解析那些行并将其输出到另一个文件/变量.

for i in $file
do
    line=`/bin/echo $i | sed 's/source1_dir/dest1_dir/g'`
    /bin/ls -l $line | grep -i "No file"
done
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时,它输出三个错误但我无法将这些错误传递给另一个文件,如果这是有道理的.我认为这与stderr有关,但我不确定.

Aar*_*lla 5

使用bash,你可以简单地使用|&,以同时获得stdout,并stderr在管道之后的命令.

但是使用测试可能更有用:

if [[ -e "$line" ]]; then
    ls -l "$line"
else
    echo "File $line doesn't exist"
fi
Run Code Online (Sandbox Code Playgroud)