Вместо того, чтобы удалять все остальное в /tmp
, я бы рекомендовал копировать только интересующие вас файлы:
cp /tmp/*.csv /data/logs/
или даже
mv /tmp/*.csv /data/logs/
, если вам не нужно хранить их в /tmp
.
Предполагается, что все интересующие вас файлы находятся непосредственно в /tmp
; ваше использование rm
предполагает, что они есть.
Поскольку /tmp
является общим временным каталогом, он может содержать другие файлы, которые ожидают найти там другие запущенные процессы, и удаление всего в /tmp
, кроме CSV-файлов, может иметь неблагоприятные последствия. Как уже упоминалось, вы также не должны изменять PATH
, так как ваша оболочка использует это для поиска команд, которые вы используете.
Можно попробовать awk:
$ awk 'NR==FNR{keys[$1]; next} $1 in keys' file1 FS='=' file2
a=1
d=4
f=5
Примерно для этого и предназначен grep -f
:
$ grep -f file1 file2
a=1
d=4
f=5
Это ищет ключи из file1
в любом месте строк в file2
, но не только перед =
; это может не сработать для ваших реальных данных.
С GNU join
, bash
иsort
:
join -t '=' <(sort file1) <(sort file2)
Выход:
a=1 d=4 f=5