Выполнение одной команды в оболочке, отличной от оболочки по умолчанию

Сzsh:

for f (**/*(D.)) : > $f

.сделать это только для обычных файлов, Dвключить скрытые файлы и файлы в скрытых каталогах.

Для небольшого количества файлов вы можете сократить его до :>**/*(D.).

Чтобы сохранить одинаковый размер файлов, но сделать их разреженными без данных (, чтобы они не занимали места на диске, за исключением файловой системы Apple HFS+, которая не поддерживает разреженные файлы):

find. -type f -exec perl -e '
  for (@ARGV) {
    unless (open F, "+<", $_) {warn "open $_: $!"; next}
    unless (seek F, 0, 2) {warn "seek $_: $!"; next}
    $size = tell F;
    unless (truncate F, 0) {warn "zap $_: $!"; next}
    unless (truncate F, $size) {warn "fill $_: $!"; next}
  }' {} +

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

0
23.08.2020, 03:31
1 ответ
bash -ic 'some bash command'

будет работать some bash commandв оболочке bash, которая инициализируется аналогично интерактивной оболочке (, включая загрузку ~/.bashrcи разрешение расширения псевдонимов ).

Пр.

 % echo $0
zsh

 % type ls
ls is /bin/ls

 % bash -ic 'type ls'
ls is aliased to `ls --color=auto'
3
18.03.2021, 23:10

Теги

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