Ответ
 
LinkBack Опции темы
Старый 24.04.2012, 02:41      #1 (ссылка на пост)
levinkv
Активный пользователь
 
Аватар для levinkv
 
Регистрация: 23.01.2012
Сообщений: 54
levinkv скоро придёт к известности
Информация

По умолчанию Команда mv в Linux - часть 2

Удаление пустого каталога

Удалить файл не сложно, но что делать с каталогами?

Код:
$ pwd
/home/hub-lex/Testing/command_mv_test

$ ls -l
-rw-r--r-- 1 hub-lex hub-lex    0 Апр 15 18:39 img_02_old.jpg
-rw-r--r-- 1 hub-lex hub-lex    0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex    0 Апр 15 08:16 img_06.jpg
-rw-r--r-- 1 hub-lex hub-lex    0 Апр 15 18:33 img_08.jpg
-rw-r--r-- 1 hub-lex hub-lex    0 Апр 15 18:33 img_09.jpg
-rw-r--r-- 1 hub-lex hub-lex    0 Апр 15 18:33 img_10.jpg
drwxr-xr-x 2 hub-lex hub-lex 4096 Апр 15 08:21 new_IMG_DIR

$ rm new_IMG_DIR/
rm: невозможно удалить «new_IMG_DIR/»: Это каталог

Как видно из вывода выше, попытка не удалась. Однако в Linux существует команда rmdir, специально предназначенная для удаления каталогов:

Код:
$ rmdir new_IMG_DIR/
rmdir: не удалось удалить «new_IMG_DIR/»: Каталог не пуст

И опять неудача. Команда rmdir может удалить только пустой каталог. В нашем случае в каталоге new_IMG_DIR содержатся файлы, так что не трудно будет удалить сначала их, а потом использовать команду rmdir.

Код:
$ ls -l new_IMG_DIR/
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:44 img_11.jpg

$ rm new_IMG_DIR/*.*

$ rmdir new_IMG_DIR/

Но что делать, если надо удалить каталог содержащий 10 подкаталогов. Более того, в каждом подкаталоге содержится еще по 10 подкаталогов, каждый из которых содержит по 44 файла? Работа по удалению каталогов превратится в ночной кошмар! Однако есть более простой путь.

Удаление файлов и каталогов, содержащих данные

Для решения этой задачи надо воспользоваться сочетанием опций -R (или –recursive) и -f (или –force). Опция -R указывает команде rm на то, что надо перейти каждый подкаталог и удалить его содержимое, а опция -f говорит, что пользователя не надо беспокоить напоминанием о том, что очередной каталог не пустой.

Код:
$ pwd
/home/hub-lex/Testing/command_mv_test

$ ls -l
-rw-r--r-- 1 hub-lex hub-lex    0 Апр 15 18:39 img_02_old.jpg
-rw-r--r-- 1 hub-lex hub-lex    0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex    0 Апр 15 08:16 img_06.jpg
drwxr-xr-x 2 hub-lex hub-lex 4096 Апр 15 18:50 new_IMG_DIR

$ ls -l new_IMG_DIR/
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:50 img_12.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:50 img_13.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:50 img_14.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:50 img_15.jpg

$ rm -Rf new_IMG_DIR/

$ ls -l
-rw-r--r-- 1 hub-lex hub-lex    0 Апр 15 18:39 img_02_old.jpg
-rw-r--r-- 1 hub-lex hub-lex    0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex    0 Апр 15 08:16 img_06.jpg

На мой взгляд это удобный способ избавится от каталога и всех его подкаталогов.

Для справки!

Ккоманда rm -Rf может удалить важные файлы и разрушить систему.

Классическое предупреждение пользователям Linux: не используйте команду rm -Rf /*, если вы работайте как пользователь root. Так можно стереть всю систему. Пользователь, сделавший это, выглядит очень глупо.

В любом случае, используя символы групповых операций в команде rm -Rf, надо соблюдать осторожность. Различие между командами rm -Rf some_file* и rm -Rf some_file * чрезвычайно велико! Первая команда удаляет все файлы в текущем каталоге начинающиеся на some_file; вторая команда сначала удаляет файл some_file, а затем все остальные файлы в каталоге и его подкаталогах.

Если вместо команды rm -Rf ~/testing/* вы зададите rm -Rf ~/testing /*, у вас возникнут большие проблемы. Сначала удалится каталог ~/testing, а затем вся файловая система.

И еще одно предупреждения пользователям: никогда не задавайте команду rm -Rf .*/*, чтобы удалить файлы, начинающиеся с точки. Поскольку указанному критерию удовлетворяет каталог .., и вы удалите все данные, расположенные выше вашего рабочего каталога.

Еще раз запомните: используя команду rm -Rf, соблюдайте осторожность! Удвойте внимание, если вы работайте с полномочиями root!

Проблемы при удалении файлов

Как удалить файл, в имени которого содержится пробел? Обычный способ – вызов команды rm и указание имени файла в качестве параметра – не подходит, так как команда интерпретирует заданное имя как два отдельных параметра.

Код:
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 19:13 img 0001.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:39 img_02_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_10.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:44 img_12.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 19:14 -its_me.jpg

$ rm img 0001.jpg
rm: невозможно удалить «img»: Нет такого файла или каталога
rm: невозможно удалить «0001.jpg»: Нет такого файла или каталога

На самом деле решить эту задачу несложно. Достаточно поместить в имя файла кавычки, как показано ниже:

Код:
$ rm "img 0001.jpg"

$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:39 img_02_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_10.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:44 img_12.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 19:14 -its_me.jpg

И еще одна проблема: как удалить файл, имя которого начинается с дефиса?

Код:
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:39 img_02_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_10.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:44 img_12.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 19:14 -its_me.jpg

$ rm -its_me.jpg
rm: неверный ключ -- t Попробуйте `rm ./-its_me.jpg', чтобы удалить файл «-its_me.jpg». Попробуйте `rm --help' для получения более подробного описания.

Команда rm воспринимает символ – как признак опции, но в данном случае не распознает опцию, начинающуюся буквы i, за которой следуют символы its_me.jpg. В результате команда не знает, как поступить.

Существует два решения этой проблемы. Во-первых, вы можете предварить имя файла двумя дефисами (). Это означает, что следующие за ними данные должны восприниматься не как опция, а как имя файла или каталога.

Код:
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:39 img_02_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_10.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:44 img_12.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 19:14 -its_me.jpg

$ rm -- -its_me.jpg

$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:39 img_02_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_10.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:44 img_12.jpg

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

Код:
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:39 img_02_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_10.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:44 img_12.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 19:19 -its_me.jpg

$ rm ./-its_me.jpg 

$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:39 img_02_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_10.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:44 img_12.jpg

На сегодня это все.
levinkv вне форума   Ответить с цитированием
Ответ

Социальные закладки

Метки
rm linux, rmdir linux, команда rm, команда rm linux, команда rmdir, команда rmdir linux

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks Вкл.
Pingbacks Вкл.
Refbacks Вкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Команда mv в Linux - часть 1 levinkv Linuxoid 0 24.04.2012 02:40
Команда mkdir в Linux levinkv Linuxoid 0 24.04.2012 02:23
Команда touch в Linux levinkv Linuxoid 0 24.04.2012 02:19
Архивация в Linux – команда tar levinkv Linuxoid 0 29.02.2012 00:48
Архивация в Linux – команда zip levinkv Linuxoid 0 29.02.2012 00:45


Реламный блок
 

Текущее время: 05:20. Часовой пояс GMT +6.


Rambler's Top100 Счётчик тиц

vBulletin Skin by MiraMaX166
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Время генерации страницы 0.11117 секунды с 18 запросами