Сравните два списка файлов, чтобы найти одинаковые файлы, но игнорировать расширения

Перенаправить стандартную ошибку ssh в файл в рамках подстановки команды, а затем проверить, является ли файл пустым или нет:

output="$( ssh server 'command' 2>ssh.err )"

if [[ -s ssh.err ]]; then
    echo 'SSH error:' >&2
    cat ssh.err >&2
fi

rm -f ssh.err

, который отображает ошибку SSH: следует записанными сообщениями об ошибках из ssh .

1
22.04.2017, 12:22
1 ответ

Если вы хотите различать вывод некоторых команд, используйте подстановку процесса <(...) вместо подстановки команд $ (...) . В противном случае кажется, что это должно сработать.

diff $ (foo) помещает вывод foo в командную строку diff , в то время как diff хочет, чтобы имя файла читать. diff <(foo) обеспечивает доступность вывода foo из fd и дает diff путь, соответствующий уже открытому fd ( / dev / fd / NN , может зависеть от системы).


Прочитав вопрос еще раз, возможно, вы захотите сделать что-то вроде этого:

for f in *.wav ; do
    b=${f%.wav}
    if [ -f "$b.mp3" ] ; then echo "$b.mp3 exists" ; else
        echo "$b.mp3 missing" ; fi
done

Это покажет, все ли .wav файлы в каталоге имеют соответствующие .mp3 файл. (Но, конечно, не будет отображать файлы .mp3 , у которых нет соответствующего .wav .)

2
27.01.2020, 23:33

Теги

Похожие вопросы