Страница 1 из 1

как заставить find не искать в подкаталогах?

Добавлено: 2009-01-22 12:11:12
мимо проходил
вот собственно и вопрос...

З.Ы. и еще один маленький вопросик
как в csh к переменной прикрутить *...что бы получилось типа /dir1/subdir1/*

Код: Выделить всё

set tempfolder = /dir1/subdir1/
set alltempfolder = (${tempfolder}*) 
не работает... :unknown:

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-22 12:15:10
Alex Keda
про финд - для текущей директории есть ls, вообщето...
а про переменную - лучше расскажите - зачем вам это

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-22 12:20:18
мимо проходил
lissyara писал(а):про финд - для текущей директории есть ls, вообщето...
а про переменную - лучше расскажите - зачем вам это
про ls понял - спасибо
про переменную.... :smile: .....стыдно признатся...

Код: Выделить всё

rm alltempfolder

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-22 12:26:21
Alex Keda
чем плох?

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-22 12:30:54
мимо проходил
lissyara писал(а):про финд - для текущей директории есть ls, вообщето...
а про переменную - лучше расскажите - зачем вам это
блин я не пойму как использовать ls что бы выводились только файлы текущего каталога(т.е. без директорий и файлов сабдиректорий).....если не трудно и не жалко черкните как это реализовывается...спасибо

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-22 12:36:56
мимо проходил
lissyara писал(а): чем плох?
так он мочит папку...а мне надо тока файлы внутри...поэтому и *

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-22 13:31:38
skeletor
Например так

Код: Выделить всё

#!/bin/sh

for i in `ls -A` 
do
   if [[ ! test -f "$i" ]]
   then
      .....
   fi
done

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-22 14:22:20
hizel
man find
-width
-maxwidth

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-22 14:32:40
мимо проходил
hizel писал(а):man find
-width
-maxwidth

Код: Выделить всё

:unknown option

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-22 14:41:04
hizel
вах вах, а во freebsd то и нету, пардон

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-22 14:58:37
мимо проходил
skeletor писал(а):Например так

Код: Выделить всё

#!/bin/sh

for i in `ls -A` 
do
   if [[ ! test -f "$i" ]]
   then
      .....
   fi
done
в папке которой производится поиск:

temp - папка
11.tgz - файл
12.tgz - файл

Код: Выделить всё

#!/bin/csh
foreach i  (`ls -A`)
  if ( ! `test -f $i` ) then
     echo $i
  endif
end
После применения, на экране:

Код: Выделить всё

temp
11.tgz
12.tgz
temp
11.tgz
12.tgz

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-22 18:18:02
zg
мимо проходил писал(а):как заставить find не искать в подкаталогах?

Код: Выделить всё

%man find | col -b | grep depth
     -d      Cause find to perform a depth-first traversal, i.e., directories
             This option is equivalent to the -depth primary of IEEE Std
     -depth  Always true; same as the -d option.
     -depth n
             True if the depth of the file relative to the starting point of
     -maxdepth n
             line arguments.  If any -maxdepth primary is specified, it
             evaluated.  -maxdepth 0 limits the whole search to the command
     -mindepth n
             than n.  If any -mindepth primary is specified, it applies to the
             -mindepth 1 processes all but the command line arguments.
     find /usr/src -name CVS -prune -o -depth +6 -print
     find /usr/src -name CVS -prune -o -mindepth 7 -print
     maries -depth, -follow, and -xdev.  These primaries always evaluated to
     An example is the expression -print -o -depth.  As -print always evalu-
     ates to true, the standard order of evaluation implies that -depth would
     The -mindepth and -maxdepth primaries are actually global options (as
%
мимо проходил писал(а):как в csh к переменной прикрутить *...что бы получилось типа /dir1/subdir1/*

Код: Выделить всё

%csh -c 'set MY_VAR = /etc/\*.local; echo "$MY_VAR"; echo $MY_VAR'
/etc/*.local
/etc/rc.local
%

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-22 19:23:13
Гость
мимо проходил писал(а):как заставить find не искать в подкаталогах?
find(1), опция -prune. Например, удалить все backup-файлы от emacs-а

Код: Выделить всё

find . -name .ccache -prune -or -type f \( -name '*~' -or -name '#*#' \) -exec rm -f {} + -print
Или просто не искать в каталогах — -maxdepth 1, в подкаталогах -maxdepth 2.
Вывести все кроме директорий в /usr/src

Код: Выделить всё

find /usr/src/ \! -type d -maxdepth 1
мимо проходил писал(а):

Код: Выделить всё

set tempfolder = /dir1/subdir1/
set alltempfolder = (${tempfolder}*) 
не работает... :unknown:
работает

Код: Выделить всё

> set tempfolder = /usr/src
> set alltempfolder = $tempfolder/*
> echo "$alltempfolder"
/usr/src/COPYRIGHT /usr/src/LOCKS /usr/src/MAINTAINERS /usr/src/Makefile ...
или можно добавить в alltempfolder все кроме папок

Код: Выделить всё

set tempfolder = /usr/src
foreach file ( $tempfolder/* )
    if (! -d "$file") set alltempfolder = ($alltempfolder "$file")
end

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-23 0:57:33
Alex Keda
ф топку ваши емаксы, и руки оторвать тому кто придумал в периодик такое запихнуть:

Код: Выделить всё

hosting$ grep daily_clean_disks_files /etc/defaults/periodic.conf
daily_clean_disks_files="[#,]* .#* a.out *.core *.CKP .emacs_[0-9]*"
hosting$    
у меня в таком формате кэш сайтов храниться - урл с решётками вместо слэшей...
я всё гадал - чё ж кэш не копиться-то )))
пока на непосещаемомо сайте не обратил внимание на дату изменения директории с кэшем =))

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-23 7:06:04
мимо проходил
Гость писал(а):
мимо проходил писал(а):

Код: Выделить всё

set tempfolder = /dir1/subdir1/
set alltempfolder = (${tempfolder}*) 
не работает... :unknown:
работает

Код: Выделить всё

> set tempfolder = /usr/src
> set alltempfolder = $tempfolder/*
> echo "$alltempfolder"
/usr/src/COPYRIGHT /usr/src/LOCKS /usr/src/MAINTAINERS /usr/src/Makefile ...
Вот мой код...он не работает.Что не так?

Код: Выделить всё

#!/bin/csh

set sfolder = (	/fs/MT/IN/ \
		MT_IN \
		/fs/MT/OUT/ \
		MT_OUT \
		)

set kol = $#sfolder

while ( $kol > 0 )

set file =  $sfolder[$kol]
@ kol -= 1 
set folder =  $sfolder[$kol]
@ kol -= 1 

.........................................................................................
set tempfolder = (${folder}temp/)

set allintempfolder = $tempfolder*

echo $tempfolder
echo $allintempfolder

......................................................................................
end
Пишет:

Код: Выделить всё

set: Нет соответствий
Пробывал и так:

Код: Выделить всё

set tempfolder = (${folder}temp)
set allintempfolder = $tempfolder/*
Таже песня...

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-23 9:35:12
zg
мимо проходил писал(а):Пробывал и так:
а читать не пробовал? хотя бы ман? ну или то, что пишут :smile:
мимо проходил писал(а):set: Нет соответствий
а с чего ты вдруг взял что, что-то не работает? если нет соотвествий шаблону, то чего он должен писать? а если это не шаблон, будь добр закрыть управляющие символы кавычками или экранированием

Re: как заставить find не искать в подкаталогах?

Добавлено: 2009-01-24 1:27:09
Гость
мимо проходил, у тя в именах файлов нет пробелов или прочих символов, на кои tcsh реагирует? Если есть, то rm -f $alltempfolder и rm -f "$alltempfolder" у тебя не пройдет. Придется делать в цикле

Код: Выделить всё

@ i = 1
while ( $i <= $#alltempfolder )
    rm -f "$alltempfolder[$i]"
    @ i++
end