Я хотел бы сделать что-то вроде этого, чтобы переместить последние два загруженных файла:
mv ` ls -rt ~/Downloads/ | tail -2 ` .
К сожалению, ls
только дает имена файлов. Как я могу адаптировать код выше?
(До того, как кто-то указывает на это, я знаю о проблемах с передачей результатов ls
. Я буду использовать это, только когда знаю имена файлов, о которых идет речь.)
find
вместо этого.Ответы:
Итак, если вы не откажетесь
ls
, то, по крайней мере, попытайтесь избавиться от привычки использовать кавычки для всего, особенно когдаxargs
это лучше подходит:источник
xargs
радует меня больше, чем спины. Но есть ли какая-либо техническая причина, чтобы предпочесть эту последовательность труб, а неxargs
использование обратных кавычек, или это только вопрос вкуса?ls
xargs -0
ls
не рекомендуется: mywiki.wooledge.org/ParsingLsВы можете использовать GNU
find
там:В
find -printf
опции:%Ts
отображать время как эпоху%p
путь к файлуВидеть
man find | less +/'^ *-printf'
редактировать
если вам нужно иметь дело с пробелами в именах файлов, я рекомендую это другое решение:
источник
find -printf
опциям-f2-
вместо-f2
как вариантcut
? Для чего второй тире?man cut
, печатает до конца, если есть более одного столбца.Используйте
ls -rt ~/Downloads/*
вместоls -rt ~/Downloads/
. Вls -rt ~/Downloads/*
аргументе строка сначала раскрывается оболочкой (это называется глобализацией имени файла ). Таким образом, вы получаете список путей в качестве аргументов дляls -rt
команды, который затем сортирует его так, как вы указали в параметрахls
. Напротив, командаls -rt ~/Downloads/
читает содержимое каталога~/Downloads/
. Это список файлов без пути к каталогу.источник
С зш:
(...)
Часть называется подстановкой классификаторов , одна из особенностей убийцуzsh
. Каждый квалификатор (обычно отдельные символы) позволяет фильтровать сопоставленные записи на основе атрибутов файлов (тип, размер, время ...), изменять порядок их расширения или изменять способ их расширения.Выше у нас есть:
.
(точка): выберите только обычные файлы (не каталоги, символические ссылки ...)om
: О rder списка по м времени odification.[1,2]
: выберите только первые две записи.Также обратите внимание, что команда не будет выполнена, если нет совпадения (где другие оболочки могут случайно переместить неправильный файл / каталог).
источник