Удалить файлы в каталоге, в имени файла которого есть дефис

Дальнейшие исследования выявили параметр noperm, который можно использовать в команде монтирования:

sudo mount.cifs //HPSERVER/linux-bup/ /home/maxg/bmsOnSrvr --v -o user=linux,pass=****,noperm

результат сейчас:

# [2018-04-17 21:45] maxg@rpi32 ~/bmsOnSrvr $
la
total 5
drwxr-xr-x 2 root root    0 Apr 17 21:04.
drwxr-xr-x 8 maxg maxg 4096 Apr 17 19:15..
-rwxr-xr-x 1 root root    4 Apr 17 21:04 deleteme.txt
-rwxr-xr-x 1 root root    0 Apr  8 11:50 desktop.ini
drwxr-xr-x 2 root root    0 Apr 17 19:15 rPi32
# [2018-04-17 21:45] maxg@rpi32 ~/bmsOnSrvr $
echo kjskjs>max.txt
# [2018-04-17 21:45] maxg@rpi32 ~/bmsOnSrvr $
rm desktop.ini
# [2018-04-17 21:45] maxg@rpi32 ~/bmsOnSrvr $
la
total 5
drwxr-xr-x 2 root root    0 Apr 17  2018.
drwxr-xr-x 8 maxg maxg 4096 Apr 17 19:15..
-rwxr-xr-x 1 root root    4 Apr 17 21:04 deleteme.txt
-rwxr-xr-x 1 root root    7 Apr 17 21:45 max.txt
drwxr-xr-x 2 root root    0 Apr 17 19:15 rPi32

[править] Однако, похоже, это правильный способ сделать это:

sudo mount.cifs //HPSERVER/linux-bup/ /home/maxg/bmsOnSrvr --v -o user=linux,pass=****,uid=1001,gid=1001

результат сейчас:

# [2018-04-17 21:59] maxg@rpi32 ~/bmsOnSrvr $
la
total 4
drwxr-xr-x 2 maxg maxg    0 Apr 17 21:50.
drwxr-xr-x 8 maxg maxg 4096 Apr 17 19:15..
drwxr-xr-x 2 maxg maxg    0 Apr 17 19:15 rPi32
# [2018-04-17 21:59] maxg@rpi32 ~/bmsOnSrvr $
echo crap>crap.txt
# [2018-04-17 21:59] maxg@rpi32 ~/bmsOnSrvr $
la
total 5
drwxr-xr-x 2 maxg maxg    0 Apr 17 22:00.
drwxr-xr-x 8 maxg maxg 4096 Apr 17 19:15..
-rwxr-xr-x 1 maxg maxg    5 Apr 17 21:59 crap.txt
drwxr-xr-x 2 maxg maxg    0 Apr 17 19:15 rPi32
0
13.03.2020, 01:43
1 ответ

Шаблон *-*будет соответствовать любому имени в текущем каталоге, которое содержит тире(буквально «имя, которое содержит хотя бы одно -, возможно, с префиксом и/или суффиксом какой-либо другой строки» ). Это означает, что вы должны уметь

rm./*-*

или

rm -- *-*

для удаления всех файлов с именами, содержащими символ -в текущем каталоге.

В оболочке zshиспользование *-*(.)в качестве шаблона ограничит поиск только обычными файлами (, а не каталогами, хотя rmвсе равно не сможет удалять каталоги ).

Если rmслишком много файлов для обработки за один раз, используйте findследующим образом:

find. -maxdepth 1 -type f -name '*-*' -delete

Я использую -maxdepth 1, чтобы ограничить поиск только текущим каталогом, и я добавил -type f, чтобы удалять только обычные файлы.

Вы также можете использовать (несколько медленный )цикл:

for name in./*-*; do
    rm "$name"
done

Некоторые люди предпочитают "один -лайнер", и этот цикл может быть записан как

for name in./*-*; do rm "$name"; done

... хотя ввод ее как многострочной команды -определенно возможен в большинстве современных оболочек.

0
28.04.2021, 23:20

Теги

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