Я хочу найти файл в каталоге Unix и, если он существует, присвоить имя файла вместе с его измененной меткой времени переменной, как показано ниже
variable=(find the file name, if exist add the filename with _a string _and modified time stamp)
Возможно ли это? Это должно выглядеть как filename_string_modifieddate(yyyymmdd)
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 "-")"' {} {} \;)
Попробуйте следующее:
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)
.