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

Я хочу найти файл в каталоге Unix и, если он существует, присвоить имя файла вместе с его измененной меткой времени переменной, как показано ниже

variable=(find the file name, if exist add the filename with _a string _and modified time stamp)

Возможно ли это? Это должно выглядеть как filename_string_modifieddate(yyyymmdd)

0
23.03.2017, 10:19
2 ответа
var=$(find -name yourfile -prune -printf '%f_%TY%Tm%Td\n')

Это заполнит переменную оболочки var значением yourfile_yyyymmdd iff ваш файл существует.

Если ваш find не понимает вышеуказанные примитивы printf , вы можете сделать это следующим образом:

var=$(find -name yourfile -prune -exec sh -c 'printf "%s_%s\n" "$1" "$(stat -c "%y" "$1" | cut -d " "-f1 | tr -d "-")"' {} {} \;)
0
28.01.2020, 04:47

Попробуйте следующее:

variable=`find . putYourConditionHere -exec ls -l --time-style +(%Y%m%d): {} \;|sed 's/.*\(([0-9]*)\): \(.*\)/\2_string_modifieddate\1/'`

Таким образом, вы используете find, чтобы найти файл, используйте опцию -exec exec ls с опцией --time-style, чтобы получить желаемый формат, и, наконец, sed, чтобы получить правильный порядок. Передайте это своей переменной.

Я включил : в дату, потому что имя файла не должно содержать его. В противном случае сценарий завершится ошибкой для имен файлов, включая что-то вроде () или (42).

0
28.01.2020, 04:47

Теги

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