Как получить список всех файлов в файле базы данных mlocate?

Я проигнорирую очевидные синтаксические ошибки в вашем коде и предположу, что вы хотите сохранить десять последних измененных файлов в каталоге ~/work. Я также предполагаю, что у вас есть оболочка zsh.

Следующий сценарий оболочки zshперемещает все файлы, кроме десяти последних измененных, из ~/workв ~/regular_archieve.

#!/bin/zsh

mv -i $HOME/work/*(.om[11,-1]) $HOME/regular_archieve

Единственная команда в сценарии оставляет десять последних измененных файлов в ~/work, а остальные перемещает в ~/regular_archieve. Это делается с помощью mvи специального шаблона zsh-. Шаблон *(.om[11,-1])будет расширяться до обычных файлов, которые необходимо переместить (никакие каталоги не будут соответствовать ). Это om, который сортирует файлы по метке времени модификации, и [11,-1], который выбирает имя файла с 11 до самого старого файла в этом отсортированном списке. Точка в начале квалификатора glob.om[11,-1]означает, что glob соответствует только обычным файлам.

Если у вас может быть много тысяч файлов в каталоге, это может привести к ошибке «Слишком длинный список аргументов». В этом случае перемещайте файлы по отдельности, используя цикл :

.
#!/bin/zsh

for pathname in $HOME/work/*(.om[11,-1]); do
    mv -i $pathname $HOME/regular_archieve
done
0
24.11.2019, 14:07
1 ответ

Правильная команда будет locate '*'или locate "*"или locate \*.

*необходимо заключить в кавычки, чтобы оболочка не расширила его до имен, присутствующих в текущем рабочем каталоге.

3
28.01.2020, 02:29

Теги

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