2013-11-25 4 views
0

У меня есть команда rm, которая очищает все файлы в определенном каталоге.Удалить файл на одном уровне каталогов только в KSH

#!/usr/bin/ksh 

cd /asd/ded/ses/ddd/rty/leg/ 

rm *.sas7bdat 
rm p_bt* 

К сожалению, она очищает все файлы в этом каталоге, но сейчас я просто хочу, чтобы очистить в «родительский каталог», т.е. «/ ASD/Ded/SES/дд/RTY/ноги /» и не в "/ asd/ded/ses/ddd/rty/leg/21_11" который является дочерней директорией внутри него.

Я знаю, что уровень rm возможен в bash. Изменяется ли это для KSH, и если да, то как.

+2

Поскольку вы не используете '-r' опцию' rm', ничто в вашем коде не должно быть удаление файлов из любого подкаталога, не говоря уже о '21_11', который не соответствует ни из комков в вашем код. – chepner

ответ

0

LonelySoul,

Chepner правильно. Значение по умолчанию для 'rm' в ksh заключается только в удалении файлов в текущем каталоге. Вы можете удалить файлы из нижних каталогов (рекурсивно), добавив параметр -r.

Если вы наблюдаете различное поведение, у вас может быть настройка псевдонима в вашем профиле. Попробуйте ввести 'whence rm', чтобы узнать, есть ли псевдоним, вызывающий неожиданное поведение.

Примеры.

>pwd 
/tmp 
>touch abc.txt 
>mkdir ced 
>touch ced/abc.txt 
>rm abc.txt (will remove abc.txt in /tmp, but leave the file in directory ced. 
>whence rm 
rm -f 
+0

Спасибо, Роберт. Он служил цели. – LonelySoul

Смежные вопросы