Инструменты пользователя

Инструменты сайта


 ↔

Боковая панель

linux:find_commands
Эта версия (2018/05/03 21:11) была проверена пользователем Случайный зритель.Доступна предыдущая проверенная версия (2016/05/25 17:36).Diff

Find command variants

читаем все htaccess

cat `find ~ -maxdepth 3 | grep .htaccess`
find . -name *htaccess* -maxdepth 3 -exec cat {} \;
find . -name *htaccess* -maxdepth 3 -exec cat {} \; | grep PHP_errors.log

стираем все htaccess

find ~ -maxdepth 3 -name .htaccess -exec truncate -s 0 {} \;

найти все robots.txt

cat `find ~ -maxdepth 3 -type f | grep robots.txt`

поиск конфига от корня

find ~ -maxdepth 3 -type f | grep -E "option|cnf|conf" | grep -vE "/\.config|/\.beget|/\.local/\.ssh|\.gitconfig"

поиск по правам

find ! -user `whoami`
find /catalog -type d -print | xargs chmod 755
find /catalog -type f -print | xargs chmod 644

поиск и выставление прав

find . -name '*htaccess' | while read line; do chmod 444 $line ;done

размер и количество файлов cache от корня

for i in `find ~ -type d -name 'cache'`; do du -sh $i; ls $i | wc -l; done

дописать всем robots.txt директиву для роботов

find - L ~ -maxdepth 3 -name robots.txt | while read -r filename; do echo -e "\nCrawl-Delay: 20" >> "$filename"; done

перезаписываем htaccess на тот, что на index кидает

find -L ~ -maxdepth 1 -name .htaccess | while read -r filename; do echo -e "яяя" > "$filename"; done

переименование cache в cache_

for i in `find . -type d -name 'cache'`; do mv "$i" "$i"_ ; done
find . -type d -name 'cache_'

обратное переименование cache_ в cache

for i in `find . -type d -name 'cache_'`; do mv $i `echo "$i" | sed 's/.$//'`; done
find . -type d -name 'cache'

другие действия (когда-то записано) + переименование

# find and print from current path
$ find . -type f # all files
$ find . -type d # all dirs

# find files matched by name
$ find . -name "*.py" -type f | while read file; do echo $file ; done

# useful cases with find:

    # find all files in directories subdir, dir1 and dir2 and rename all files 
    # (in these directories and in all subdirectories recursively, but if
    # directory have subdirectory with spaces you get error from rename
    # operation).

    $ find dir0/subdir dir1 dir2 -type f | rename "s/ /_/g"

    # result:

    # subdir/filename_with_spacesi
    # subdir/music/ex_1
    # subdir/music/ex_2
    # ...
    # dir1/ex_1
    # dir1/ex_2
    # ...
    # dir2/ex_1
    # dir2/ex_2
    # dir2/docs/pdf/1_1.pdf
    # dir2/docs/pdf/1_2.pdf

# rename methods:

# by mv with sed
$ for i in *; do mv "$i" echo "$i" | sed -e "s/ /_/g"; done

# by rename tool
$ rename 'y/A-Z/a-z/' * # or 
$ rename 'y/a-z/A-Z/' *
$ rename 's/ /_/g' * # or 
$ rename 's/_/ /g' *

# rename files (lower case + " "->"_")
$ find ./ -type f | while read file; do rename 'y/A-Z/a-z/' &&  rename "s/ /_/g"; done

# rename dirs and subdirs with spaces in name
$ find ./ -type d | while read dir; do rename 's/ /_/g'; done

# match by regex:
$ find . -type f -regex ".*py$" | while read file; do echo $file; done
$ find . -type f -regex ".*sh$" | while read file; do echo $file; done

# but:
$ find -type f -regextype posix-egrep -regex '.*(py|sh)$'

    # because find is very old and use emacs styled
    # reg exp - see $ man find | grep emacs

    # "for i in `find -type f`" - bad solution becuse don't work well with 
    # spaces in filenames, should use "find -type -f | while read i"

    # find utility have many veru useful options like
    # find recently modified file $ find . -cmin -5

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
Q Y W Q V
 
/home/d/dgaloc/wiki.dmgl.info/public_html/data/pages/linux/find_commands.txt · Последние изменения: 2018/05/03 21:10 — Случайный зритель