Как сопоставить столбец файла 1 в текст другого файла 2, тогда если он совпадает с файлом печати 2

find "$DIR" -type d | while read d; do echo "$d,$(ls -t "$d" | sed -n '1h; $ { G; s/\n/,/g; p }')"; done

Или в более удобочитаемом формате и с использованием дополнительной переменной для демонстрации:

find "$DIR" -type d |
while read d;
do
    files=$(ls -t "$d" | sed -n '1h; $ { G; s/\n/,/g; p }')
    printf '%s,%s\n' "$d" "$files";
done

Это находит все подкаталоги $ DIR с помощью команды find . Для каждого найденного файла используется ls -tr , чтобы получить список файлов в этом каталоге, отсортированных по дате, сначала самые новые.

Передайте вывод команды ls -tr в sed , соединяя первую и последнюю строку запятой: опция -n подавляет вывод по умолчанию, ] 1h сохраняет первую строку (самое новое имя файла) в пространстве удержания , а в последней строке файла (выбранном $ ) добавляет пространство удержания (самое новое имя файла ) с H в пространство шаблонов (разделенное новой строкой) и заменяет эту новую строку запятой.

Затем сценарий printf определяет имя подкаталога, за которым следует запятая, за которыми следуют файлы, полученные из sed .

Это не делает различий между каталогами и файлами для выбора самого старого / самого нового, поэтому, если вам не нужны каталоги, вам нужно отфильтровать вывод ls -t , чтобы удалить каталоги.

0
11.10.2018, 02:57
1 ответ

Использование Awk:

awk -F, 'NR==FNR {TaxID[$2]=1; next} FNR==1 || $NF in TaxID' File1 File2
Object_ID, Length, Assignment
NODE_6498_length_5833_cov_14.8079,5833,155978
0
28.01.2020, 04:12

Теги

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