The UNIX and Linux Forums  
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.

Go Back   В UNIX и Linux Форумы > Топ форумы > UNIX для чайников Вопросы И Ответы
.
Google unix.com



UNIX для чайников Вопросы И Ответы Если вы не уверены в том, где разместить UNIX или Linux вопрос, задайте его здесь. Все UNIX и Linux приветствуем новичков!!

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
BASH: Поиск файлов по дате и шинковать их cbismuth Shell программирование и сценарии 2 06-13-2005 11:20 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered By Powered by Google
 
LinkBack Резьба Инструменты Искать в этом Thread Оценить Thread Режимы дисплея
Old 07-17-2006
jack1981 jack1981 is offline
Зарегистрированный пользователь
  
 

Регистрация: Jul 2006
Сообщений: 42
Помощь с использованием лоскуток вместо RM

Привет,

У меня этот скрипт, который работает довольно хорошо бар пара проблем, я пытаюсь подражать РМ команде, и это означает, что я не могу использовать RM каталог, я inted к моим псевдонимом сценарий для РМ, а затем использовать М.В. переместить файлы в корзина папке, а не удалить.

Проблема: Когда я использую М.В. перейти в каталог с моим исключить папку, где этот каталог все готово существует Я получаю сообщение об ошибке, я планирую лоскуток все файлы, а потом я хочу использовать rmdir удалить все пустые каталоги в дереве.

Мой сценарий находится здесь

Код:

#!/bin/bash
# Ai program to emulate the "rm" command in UNIX.
# Created by Michael Kelly
# Last revison 12/07/2006


# INITIALIZE VARIABLES
NO_ARGS=0
FLAG_R=""
FLAG_F_I=""
FLAG_V=""
TRASH=$HOME/deleted

# FUNCTIONS

function errors() {
if [ "$#" -eq  "$NO_ARGS" ] ; then
      echo "rm: too few arguments"
      echo "Try \`rm --help' for more information."
      exit 0
elif [[  ! -f "$1"  && ! -d "$1"   ]] ; then
      echo "rm: cannot remove $ARG : no such file or directory"
      exit 0
elif [[ -d $ARG  &&  "$FLAG_R" = ""  ]] ; then
      echo "rm: \`$ARG' is a directory"
      exit 0
else
     checkExisting $1
fi
}

function verbose () {
if [ "$FLAG_V" = "v" ] ; then
echo "removing \`$1'"
fi
}

function interactive () {
echo -n "rm: remove $1 ?"
     read A
     if [[ "$A" = [Yy] ]] ; then
     remove $1
     else
     exit 0
fi
}

function writePro () {
if ! [ -w  "$1" ] ; then
echo -n "rm: remove write-protected file \`$*'?"
     read A
     if [[ "$A" = [Yy] ]] ; then
     delete $1
     fi
else
     delete $1
fi

}
function checkExisting ()
{
if [ -d "$TRASH/$1" ] || [ -f "$TRASH/$1" ]; then


     shred -fp $TRASH/$1 2>/dev/null
     rmdir $TRASH/$1 2>dev/null
     writePro $1

else
     writePro $1

fi
}

function force () {

mv -f $1 $TRASH 2>/dev/null
verbose $1
}


function remove () {
mv  $1 $TRASH 2>/dev/null
verbose $1
}

function delete() {
if [ "$FLAG_F_I" = "-i" ] &&  [ -w  "$@" ] ; then
   interactive $1
elif [ "$FLAG_F_I" = "-f"  ] ; then
   force $1
elif [ "$FLAG_R" = "-R"  ] ; then
   recursive $1
else
   remove $1
fi

}

# Getops

while getopts :rRfvi o
do    case $o in
           r|R) FLAG_R=-R
             ;;
             f) FLAG_F_I=-f
             ;;
             v) FLAG_V=-v
             ;;
             i) FLAG_F_I=-i
             ;;
             *) echo "rm: invalid option -$1"
                echo "try \`rm --help' for more information"
                exit 0
      esac
done
shift `expr $OPTIND - 1`

if ! [ -d "$HOME/deleted" ] ; then
     mkdir $HOME/delete

else
   for ARG in $*
   do
   errors $ARG
   done
fi
if [ $# -eq $NO_ARGS ] ; then
errors
fi
Я подчеркнул проблему функция жирным шрифтом, я хотел бы лоскуток recrusively файлы, а затем использовать rmdir таким же образом, за пустые каталоги.

Кто рекомендовал эту команду:

Код:
find -type f -exec shred -u '{}' \;
который лоскутков recursivley но как я могу уточнить этот момент, чтобы начать shreding от? когда я использовал до этого он уничтожил все файлы в моем домашнем каталоге года.

После того, как я, которые сортируются я хочу использовать аналогичную команду, но вместо rmdir с лоскуток, может ли кто-нибудь меня сообщить ему?

Привет

Джек
Old 07-17-2006
Hitori's Avatar
Hitori Hitori is offline Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Июнь 2006
Сообщений: 360
Почему бы просто не

Найти TRASH $ / $ 1 типа F-EXEC лоскуток-U '()' \;
Old 07-17-2006
jack1981 jack1981 is offline
Зарегистрированный пользователь
  
 

Регистрация: Jul 2006
Сообщений: 42
Ура!

Итак, как я мог бы использовать в rmdir аналогичным образом удалить пустые каталоги?

Джек
Old 07-17-2006
jack1981 jack1981 is offline
Зарегистрированный пользователь
  
 

Регистрация: Jul 2006
Сообщений: 42
Цитата:
Первоначально Послано Hitori
Почему бы просто не

Найти TRASH $ / $ 1 типа F-EXEC лоскуток-U '()' \;

Кроме того, я рода новым для Unix не могли бы вы объяснить, эта команда чуть лучше, кто-то рекомендовал его, и я действительно Dont понять-EXEC и "() '\

Еще раз спасибо

Джек
Old 07-17-2006
jack1981 jack1981 is offline
Зарегистрированный пользователь
  
 

Регистрация: Jul 2006
Сообщений: 42
Я побежал в мой скрипт, и он говорит, отсутствует аргумент для EXEC
Old 07-17-2006
Hitori's Avatar
Hitori Hitori is offline Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Июнь 2006
Сообщений: 360
Цитата:
Первоначально Послано jack1981
Я побежал в мой скрипт, и он говорит, отсутствует аргумент для EXEC
Не забудьте <space>:

Найти TRASH $ / $ 1 типа F-EXEC лоскуток-U '()'<space>\;

Это значит, поиск (рекурсивный) в директории $ TRASH / $ 1 для файлов (типа F), и выполнить для каждого файла, который был найден команду лоскуток-U '()' где макрос () будет заменен на имя файла

Вы можете использовать типа D для поиска по каталогам

Проверьте найти (1) (1 человек найти)
Old 07-17-2006
jack1981 jack1981 is offline
Зарегистрированный пользователь
  
 

Регистрация: Jul 2006
Сообщений: 42
Привет, спасибо еще раз.

Я до сих пор получаю ошибку Однако, даже с космическим мой код будет выглядеть примерно так:

Найти TRASH $ / $ 1 типа F-EXEC лоскуток-фу '()' \ 2> / Dev / нуль

какие-либо идеи, то почему?
Closed Thread

Закладки

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 04:02 AM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0