Строки извлечения с определенными датами и выполняют команду на каждом из них

Вы можете сделать это с помощью команды [11636]ldd[11637]:

  • Пример:

  • 1
    27.12.2014, 01:36
    3 ответа

    Вы не поделились достаточной информацией, чтобы показать, что компьютер имеет двойное подключение, которое, в свою очередь, можно использовать для двух различных каналов MPTCP. Но поскольку я полагаю, что вы пытались дать достаточно информации, я могу сделать вывод, что вы не знаете предпосылок, и поэтому я думаю, что могу дать вам ответ. Я на самом деле не использую MPTCP, и другие могут дать вам лучшие ответы.

    Многолучевое TCP полезно, когда одна из конечных точек может взаимодействовать с другой через различные маршруты. В вашем случае вы, кажется, предполагаете, что ваша машина является конечной точкой, которая может быть доступна через несколько маршрутов, но я не убежден, что ваша машина настроена так, что она может работать таким образом.

    Прежде всего, необходимо использовать исходную маршрутизацию. Некоторые примеры приведены в запросе на использование функций, который должен быть выполнен при создании конфигурации маршрутизации на основе источника . Во-вторых, трудно добраться до компьютера извне, если он имеет частные сетевые адреса, скрытые за маскирующим (NAT) маршрутизатором. MPTCP хорошо работает на устройствах, подключенных к Интернету, а не на устройствах, подключенных к частным сетям с ограниченным подключением через маскирующий маршрутизатор.

    Если вы хотите просто поэкспериментировать, вам, возможно, больше повезет с использованием только одного соединения для достижения конечной точки с поддержкой MPTCP через два различных маршрута. Но если вы хотите использовать два различных соединения на вашей стороне, вам, вероятно, придется сначала получить две реальные ссылки на Интернет с одним общедоступным IPv4 или IPv6 адресом.

    Вы сказали, что некоторые веб-сайты указывают на наличие поддержки MPTCP. Вы должны проверить с этими веб-сайтами, что именно это означает. Может быть просто то, что ваша система сообщает им поддержку MPTCP, которая ничего не говорит о количестве каналов, которые вы можете запустить. Также может быть, что вы можете общаться через один интерфейс, но можете использовать несколько каналов, если веб-сайт доступен через несколько адресов.

    -121--145989-

    Но что-то в синтаксисе вызывает недоумение и противоречит ожиданиям.

    Аргументами для ln в том виде, в котором вы его используете, являются:

    ln [OPTION]... [-T] TARGET LINK_NAME (1-я форма)

    Недоумение заключается в том, что при создании symlink аргумент target для ln должен быть не путем к файлу, а скорее содержимым создаваемой symlink. Если подумать на мгновение, то очевидно, что это должен быть именно путь. Рассмотрим:

    $ echo foo >foo
    $ ln -s foo bar1
    $ ln -s $PWD/foo bar2
    $ cat bar1
    foo
    $ cat bar2
    foo
    $ ls -l bar1 bar2
    lrwxrwxrwx 1 matt matt  3 Dec 29 16:29 bar1 -> foo
    lrwxrwxrwx 1 matt matt 29 Dec 29 16:29 bar2 -> /home/matt/testdir/foo
    

    В этом примере я создаю 2 symlinks с именами «bar1» и «bar2», которые точка к одному и тому же файлу. ls показывает, что сами symlinks имеют различное содержимое, хотя - один содержит абсолютный путь, а другой - относительный путь. Из-за этого один продолжал бы работать, даже если бы он был перемещен в другой каталог, а другой нет:

    $ mv bar2 /tmp
    $ cat /tmp/bar2
    foo
    $ mv bar1 /tmp
    $ cat /tmp/bar1
    cat: /tmp/bar1: No such file or directory
    

    Итак, учитывая, что мы должны иметь возможность делать и относительные, и абсолютные symlinks,и даже для создания разорванных символьных ссылок, которые станут неразорванными, если целевой файл будет создан позже, аргумент target должен интерпретироваться как текст произвольной формы, а не как путь к уже существующему файлу.

    Если вы хотите создать файл с именем deploy/resources.php, который ссылается на deploy/resources.build.php, вам нужно решить, хотите ли вы создать абсолютную symlink (которая устойчива к перемещаемому symlink, но прерывается при перемещении целевого объекта)или относительный symlink (который будет продолжать работать до тех пор, пока symlink и target перемещаются вместе и поддерживают одинаковые относительные пути).

    Чтобы создать абсолютную символьную ссылку, можно сделать следующее:

    $ ln -s $PWD/deploy/resources.build.php deploy/resources.php
    

    Чтобы создать относительную ссылку, сначала необходимо определить относительный путь от источника к цели. В этом случае, поскольку источник и цель находятся в одном каталоге относительно друг друга, можно просто сделать следующее:

    $ ln -s resources.build.php deploy/resources.php
    

    Если бы они не находились в одном каталоге, вместо этого нужно было бы сделать что-то вроде:

    $ ln -s ../foo/f bar/b
    

    В этом случае, несмотря на то, что foo и bar находятся в текущем каталоге, необходимо включить ../ в ln target , поскольку в нем описывается, как найти f из каталога, содержащего b .

    Это чрезвычайно длинное объяснение, но, надеюсь, оно поможет вам понять синтаксис ln немного лучше.

    -121--41180-

    Очевидно, вы можете использовать api Google для перечисления и сортировки файлов по вашим потребностям специально (от drive --help ) :

    list:
        -m, --max      Max results
        -q, --query    Query (see https://developers.google.com/drive/search-parameters)
    

    ... и от ссылки...

    • Поиск файлов, измененных после 4 июня 2012 г.
        modifiedDate > '2012-06-04T12:00:00'    // default time zone is UTC
        modifiedDate > '2012-06-04T12:00:00-08:00'
    

    Обратите внимание, что в примере поиск файлов более поздней , чем определенная дата...

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

    mdate_list() { drive list -nq \
        "modifiedDate $1 '$(date -ud"$2" '+%FT%T')' and \
         mimeType != 'application/vnd.google-apps.folder'"
    }  
    rmdrv() for dfile do drive delete -i "$dfile" || return; done
    
    set -f; unset IFS            #no split data mangling, please
    while   set -- $(mdate_list \< '15 days ago'|cut -d\  -f1)  
            [ "$#" -gt 0 ]
    do      rmdrv "$@" || ! break
    done
    

    Я только установил пока цикл вообще на случай, если у вас есть слишком много файлов диска для обработки в одном списке - большую часть времени вы легко обойдетесь без него, но если есть много, это будет продолжать заполнять список, пока нет больше.

    Остальное происходит только в результате данных, которые вы его подаете. Обратите внимание, что я специально исключил папки здесь, но вы, вероятно, захотите посмотреть на упомянутую ссылку, если есть что-то еще, что вы можете изменить.

    1
    27.01.2020, 23:28

    Предполагая, что список файлов находится в файле с именем X.txt , скрипт Bash следующим образом может сделать работу:

    #!/bin/bash
    
    IFS="\n"
    for i in $(cat x.txt)
    do
        fid=$(echo $i | awk '{print $1}') # extract the file id
        d=$(echo $i | awk '{print $5}') # extract the date filed
        d2=$(date -d "$d" +%s)  # convert it to epoch sec
    
        now=$(date +%s) # current time in epoch sec
        diff=$(( (now - d2) / 86400 )) # find diff and convert it to days
        echo "The file $fid is $diff days old"
        if (( $diff > 15 )) #if the diff is greater than 15 
        then
          #delete file
          drive delete --id $fid
        fi
    done
    
    1
    27.01.2020, 23:28

    Очень просто с awk

    drive list |\
    awk 'BEGIN{ "date +%s -d -15\\ days" | getline n }
            $6{ m=$5"\\ "$6
                ("date +%s -d "m) | getline t
                if(t < n) system("drive delete -id "$1) }' 
    
    1
    27.01.2020, 23:28

    Теги

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