zsh find -execdir переименовать «нет такого файла или каталога»

ls -1
Команда

будет отображать записи по одной в строке. В более общем случае вы можете использовать

--format=<WORD>

вариант. Здесь должно быть одним из слов, перечисленных в левом столбце ниже:

across         -x
commas         -m
horizontal     -x
long           -l
single-column  -1
verbose        -l
vertical       -C

где однобуквенные варианты, указанные в правом столбце, являются просто сокращениями для более длинной версии.

3
21.05.2021, 09:07
1 ответ

Поскольку вы используете Zsh, я бы использовал для этогоzmvвместоfind:

% autoload -Uz zmv
% zmv -n '(**/)(*)(#q.)' '$1${2//[^. [:IDENT:]]/-}'  # -n: no execute
mv -- 'untitled file2 [].txt' 'untitled file2 --.txt'
mv -- 'untitled file3 [].txt' 'untitled file3 --.txt'
% zmv -v '(**/)(*)(#q.)' '$1${2//[^. [:IDENT:]]/-}'  # -v: verbose
mv -- 'untitled file2 [].txt' 'untitled file2 --.txt'
mv -- 'untitled file3 [].txt' 'untitled file3 --.txt'
% 

[^. [:IDENT:]]соответствует всему, что не является точкой, пробелом или действительной частью идентификатора оболочки. (#q.)— ограничить переименование обычными файлами, такими как ваш -type f.

Подробнее:

2
28.07.2021, 11:30

Теги

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