touch: отсутствует файловый операнд с именем файла, содержащим хэш #

Для проверки:

find /home/ -name '*.txt' -exec ls -l {} \;

Для фактического удаления:

find /home/ -name '*.txt' -exec rm -f {} \;

Конечно, замените 'txt' тем, что вам нужно.

0
27.01.2020, 10:56
3 ответа

( Использованиеset -x(xtrace)для просмотра выполняемой команды)

$ set -x
$ touch #a{1..10}
+ touch
touch: missing file operand
Try 'touch --help' for more information.
$ touch a{1..10}
+ touch a1 a2 a3 a4 a5 a6 a7 a8 a9 a10

Знак решетки #в начале слова превращает остальную часть строки в комментарий. Вам нужно процитировать:

$ touch "#"a{1..10}
+ touch '#a1' '#a2' '#a3' '#a4' '#a5' '#a6' '#a7' '#a8' '#a9' '#a10'

Или в Bash вы можете использовать shopt -u interactive_comments, чтобы полностью отключить обработку комментариев.

3
28.01.2020, 02:21

Решение, которое работает для меня,-

$ touch \#a{1..10}
0
28.01.2020, 02:21

Проблема здесь в том, что вы хотите включить #в имена ваших файлов, что для оболочки является индикатором «комментарий». Таким образом, весь текст после неэкранированного#игнорируется, и ваша команда жалуется на отсутствующий операнд.

Одним из возможных решений является заключение этой части имени файла в кавычки, как в

~$ touch "#a"{1..10}
1
28.01.2020, 02:21

Теги

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