копировать файлы в подкаталогах во временную папку, где существует только 1 расширение файла - PullRequest
0 голосов
/ 25 мая 2018

У меня есть такие подкаталоги:

dir1/
 1a.txt
 1a.out
 1b.txt
dir2/
 2a.txt
 2b.txt
 2b.out

, где я хочу скопировать файлы, в которых существует только 1 тип файла в этом подкаталоге.то есть в этом случае я бы хотел скопировать 1b.txt и 2a.txt в папку tmp.

Я могу гарантировать, что для каждого файла появляется .txt, но иногда .out не появляется.По сути, я просто хочу найти эти файлы с .txt, но их эквивалент .out не существует.

1 Ответ

0 голосов
/ 25 мая 2018

Простая версия двойного цикла, упомянутая Aserre:

for d in dir?
do for f in $d/*.txt
   do [[ -e ${f%.txt}.out ]] && continue || cp "$f" tmp/
   done
done

Это копирует только * .txt, поэтому вам придется проверять отдельно или усложнять условие, если вы также хотите * .outфайлы, которые не соответствуют * .txt, но должны дать вам кое-что для работы.

см. правила для Подстановка параметров и Манипулирование строками для пояснений и многого другогоигрушки.

Обратите внимание, что при этом не нужно обрабатывать специальные символы или пробелы, встроенные в имена файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...