Создать каталог с отметкой времени новейших файлов

My hope os that this environment variable with the password will not be accessible outside the context of process (b). Is that correct?

Нет, не стоит на это полагаться. Например, в Linux процесс, запущенный тем же пользователем, может иметь доступ к вашей среде через/proc/<pid>/environ

Попробуйте:

tr '\0' '\n' < /proc/$$/environ

(или с PID любого из ваших процессов)

1
24.09.2019, 15:11
2 ответа

Этот zsh-скрипт выберет два новейших (простых )файла в текущем каталоге, соберет отметку времени модификации самого последнего из них, преобразует эту отметку времени в формат ГГГГммдд, создаст каталог, затем скопирует эти два новейшие файлы в этот каталог:

#!/bin/zsh

newest2=( *(.om[1,2]) )
dsec=$( stat -c %Y "${newest2[1]}" )
dnam=$( date -d @"$dsec" +%Y%m%d )
mkdir "$dnam"
cp -- "${newest2[@]}" "$dnam"

Первая строка, присваивающая newest2, расширяет подстановочный знак *квалификатором (в скобках ). Квалификатор запрашивает:

  • .--обычные файлы
  • om--упорядочено по времени модификации (от новейшего к старому набору)
  • [1,2]--разделите список, чтобы включить только элементы с 1 по 2

Затем мы запрашиваем statвремя модификации в секундах самого нового файла; эта дата передается в GNU date, который возвращает имя каталога в нужном нам формате. После создания каталога команда cpкопирует два файла в этот каталог.

3
27.01.2020, 23:22

Здесь мы предполагаем, что вы хотите, чтобы имя папки было извлечено из первого файла:

Создать каталог

dir="$(mkdir -p $(ls -ltp --full-time | grep -v / | awk '{print $6}' | sed -n '2p' | sed 's/-//g'))"

Список только файлов grep -v /, отсортированных по времени lt, показать полное время (, поэтому у нас есть дата)--full-time.

ls -ltp --full-time | grep -v /

Выберите столбец дат

awk '{print $6}'

Получить вторую строку (первая строка показывает количество файлов ), которые соответствуют первому файлу, и удалить тире:

sed -n '2p' | sed 's/-//g'

Скопируйте файлы

cp $(ls -ltp --full-time | grep -v / | awk '{print $9}' | sed -n '2,3p' | tr '\n' ' ') "${dir}/"

Список только файлов grep -v /, отсортированных по времени lt, показать полное время (, поэтому у нас есть дата)--full-time.

ls -ltp --full-time | grep -v /

Получить имена файлов:

awk '{print $9}'

Выберите первый и второй файл

sed -n '2,3p'

Замените пробел на новую строку, чтобы мы могли выполнить копирование в одну строку.

tr '\n' ' '

Команда будет выглядеть следующим образом

cp x z 20190924/
0
27.01.2020, 23:22

Теги

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