Я хочу удалить файл с сервера через bash rm
команда.
Это образец файла Test_ Mürz.jgp
.
Как можно было бы удалить файлы с такими символами, проблемы в имени файла в большом масштабе ... особенно если вы не знаете положение символов.
Для отдельных файлов или небольших наборов файлов, если подстановка подстановочных знаков не позволяет добиться необходимой точности, вы можете комбинировать ls -i
(или stat
, если есть) и find -inum
.
В целях безопасности при использовании find's -inum
, всегда обязательно используйте -xdev
чтобы ограничить поиск одной файловой системой. Невыполнение этого может привести к неожиданным результатам.
Например:
~$ ls -i myweirdfile
183435818 myweirdfile
~$ find . -xdev -inum 183435818 -exec rm -i '{}' ';'
rm: remove regular file `./myweirdfile'? y
~$
В качестве альтернативы, при одном вызове (это может зависеть от GNU coreutils stat, что должно быть довольно безопасным предположением в Linux и использует замену процесса в стиле sh):
~$ find . -xdev -inum $(stat -c '%i' 'myweirdfile') -exec rm -i '{}' ';'
rm: remove regular file `./myweirdfile'? y
~$
Вы также можете использовать find -delete
действие, а не -exec
'ing rm. Для действительно странных имен файлов это может быть безопаснее. Использовать -print
или -ls
сначала, чтобы проверить, какой файл будет удален. Примерно так:
~$ ls -i myweirdfile
183435818 myweirdfile
~$ find . -xdev -inum 183435818 -print
./myweirdfile
~$ find . -xdev -inum 183435818 -delete
~$ find . -xdev -inum 183435818 -print
~$
Имейте в виду, что жесткие ссылки используют один и тот же номер inode для нескольких имен, поэтому вы хотите убедиться, что нигде нет случайного дополнительного имени, которое также удаляется (если вы хотеть для этого, очевидно).
Простой способ:
ls -i Test_*
rm -i [inode number]
Какие «масштабные» цели у вас есть?
Почему этого недостаточно?
$ rm Test_*
Один из способов погрузиться в дерево каталогов файлов:
$ find /your/base/dir -maxdepth 3 -type f -name 'Test_*' -exec rm {} \;
Вы можете настроить команду find для обнуления ваших файлов.
мы также можем использовать эту команду rm ./"Test_ Mürz.jgp"
удалить такие файлы
есть три метода: