Могу я 'ls' все файлы в каталоге от “1”, “2”, …, “9”, “10”, “11”, …, “20”, “21”, …?

system функция уже вызывает оболочку. Это может быть любым sh (Граница/POSIX) оболочка, не всегда колотить. Если Вы не должны использовать определенные для удара конструкции, Вы не должны вызывать другую оболочку в нем. Если Вы выполняете простую команду, просто включаете перенаправление в командную строку. При выполнении более сложных команд Вы, возможно, должны поместить фигурные скобки вокруг целой последовательности команды.

system("echo hello >somefile");
system("{ echo foo; echo bar; } >somefile");
2
12.04.2013, 20:35
2 ответа

С GNU ls (как найдено на большинстве дистрибутивов Linux), можно использовать ls -v, где -v, от man страница

 -v     natural sort of (version) numbers within text
5
27.01.2020, 21:55

GNU ls -v был уже упомянут, но для других команд, если Ваша оболочка zsh, можно влиять на подстановочные знаки порядка, расширены с globbing спецификаторами.

Например:

printf '%s\n' *(om)

Перечислил бы файлы, отсортированные по времени изменения (от новейшего до самого старого), *(Om) инвертировать порядок сортировки (от самого старого до новейшего).

*(n) отсортировал бы файлы численно. Таким образом, если Ваш ls не GNU ls, Вы могли все еще сделать:

ls -fdl -- *(n)

Отсортировать список численно.

1
27.01.2020, 21:55

Теги

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