Я пытаюсь использовать, находят и ls для сортировки файлов на основе даты, однако, это ничего не делает. Вот моя команда:
find ./.BUBackups -name "test*" -exec ls -t {} \;
Я также попробовал:
find ./.BUBackups -name "test*" -exec ls -lt {} \;
В тестировании-t просто делает - ничто. работы-l, но если я ввел-t, он действует, как будто я не вставил его вообще. Однако ls-t или ls - Это работает превосходное, когда я не выполняю его через должностное лицо в словах других, просто вводящих ls-t работы
Действительно ли это - незначительный сбой? или я делаю что-то не так?
-exec
аргумент для нахождения выполняет указанную команду однажды для каждого файла, которые находят, располагается. Таким образом, если у Вас будут файлы test_a, test_b, и test_c, то Ваша команда будет эквивалентна:
ls -lt test_a
ls -lt test_b
ls -lt test_c
Другими словами, каждый список выполняется независимо на файл, таким образом, файлы будут перечислены в любом порядке, находят, определяет местоположение их, а не в порядке времени изменения, как -t
опция к ls указывает.
То, что Вы действительно хотите, является чем-то как find ./.BUBackups -name 'test*' | xargs ls -lt
, то, которое, с файлами в качестве примера я использовал выше, будет эквивалентно ls -lt test_a test_b test_c
. Так как Вы теперь используете один вызов ls для списка всех файлов, которыми Вы интересуетесь, он может поместить их в надлежащий порядок mtime.
Причина -t
не работает это find
выполняется ls
однажды для каждого найденного файла отдельно, таким образом, вывод находится в порядке, которым найдены файлы. Чтобы заставить его работать путь, Вы ожидаете:
find ./.BUBackups -name "test*" -exec ls -lt {} +
или
find ./.BUBackups -name "test*" -print0 | xargs -0 -exec ls -lt