Быстрого решения вашей проблемы нет, поскольку входные файлы не отсортированы. Однако вы можете сделать что-то вроде этого:
join -o 0,1.2,1.3,2.3 <(sort A.csv) <(sort B.csv)
Похоже, zip сначала хочет zip-файл:
for i in */; do zip "${i%/}.zip" -r "$i" ; done
Если вы новичок в терминале, то, вероятно, вы не изучили устрашающий, но полезный мир страниц руководства: D
Если вы знаете man zip
в командной строке предполагается, что zip используется следующим образом:
"Normally when an input pattern
does not match a file the "name not matched" warning is issued
"
If zip is not able to read a file, it issues a warning but continues.
See the -MM option below for more on how zip handles patterns that are
not matched and files that are not readable. If some files were
skipped, a warning is issued at the end of the zip operation noting how
many files were read and how many skipped."
Я бы начал с замены вашей команды zip на эхо «$ {i% /}» и посмотрел, каков будет ваш результат. Где-то папка вызывает проблему: либо вы не можете получить к ней доступ, либо ее имя неверно. Поскольку вы просто просматриваете папки в одном каталоге, вы можете использовать find. -type d -readable
для сравнения с каталогами, к которым вы хотите получить доступ, чтобы увидеть, есть ли папка, к которой у вас фактически нет доступа для чтения.
Ответы по обмену стеком Unix:
https://stackoverflow.com/questions/20529851/zip-command-not-working
«предупреждение о zip-архиве: имя не соответствует» при сжатии каталога