Выбираем и перебираем различия в двух каталогах linux - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть скрипт bash, который перебирает файлы в папке raw и помещает их в папку audio. Это работает просто отлично.

#!/bin/bash
PATH_IN=('/nas/data/customers/test2/raw/')
PATH_OUT=('/nas/data/customers/test2/audio/')

mkdir -p /nas/data/customers/test2/audio
IFS=$'\n'
find $PATH_IN -type f -name '*.wav' -exec basename {} \; | while read -r file; do
    sox -S ${PATH_IN}${file} -e signed-integer ${PATH_OUT}${file}
done

Моя проблема в том, что по мере роста папок я не хочу запускать сценарий для файлов, которые уже были преобразованы, поэтому я хотел бы зацикливать только те файлы, которые еще не были преобразованы. Т.е. файлы только в формате raw, но не в аудио.

Я нашел функцию

diff аудио raw

Это я могу сделать именно так, но я не могу найти хороший способ включить это в мой скрипт bash. Любая помощь или толчки в правильном направлении будут высоко оценены.

1 Ответ

2 голосов
/ 12 апреля 2019

Вы можете сделать:

diff <(ls -1a $PATH_OUT) <(ls -1a $PATH_IN) | grep -E ">" | sed -E 's/> //'

Первая часть будет отображать файлы в обеих папках, вторая часть будет отфильтрована, чтобы получить только дополнения, а третья -очистите список от символов diff, чтобы получить только имена.

...