Korzystanie z Bash
Powiedzmy, że mam kilka plików losowo umieszczonych w katalogu nadrzędnym. ~/src
Chcę pobrać wszystkie pliki pasujące do określonego sufiksu i przenieść je (lub skopiować) do ~/dist
katalogu.
Załóżmy w tym celu, że wszystkie nazwy plików mają następującą konwencję nazewnictwa:
<filename_prefix>.<filename_suffix>
Dowiedziałem się, że był to szybki sposób na pobranie wszystkich plików z określonym filename_suffix
plikiem i umieszczenie go w folderze dist:
mkdir ~/dst
find source -name "*.xxx" -exec mv -i {} -t ~/dst \;
Teraz krok dalej ... jak mogę w tym przypadku użyć wyjścia find filename
i użyć filename_prefix
do wygenerowania katalogu o tej samej nazwie w, ~/dist
a następnie przeniesienie (lub skopiowanie) wszystkich plików z tym prefiksem do odpowiedniego katalogu?
mkdir ~/dst
find source -name "*.xrt,*.ini,*.moo" -exec mv -i {} -t ~/dst \;
Zasadniczo, jak zmienić powyższe polecenie (lub może użyć innego polecenia), aby utworzyć taką strukturę
(WYNIK)
~/dist/people/people.xrt
~/dist/games/games.xrt
~/dist/games/games.moo
~/dist/games/games.ini
~/dist/monkeys/monkeys.ini
~/dist/monkeys/monkeys.xrt
z takiego drzewa katalogów?
(WEJŚCIE)
~/src/xrt/people.xrt
~/src/xrt/games.xrt
~/src/conf/games.ini
~/src/pack/monkeys.xrt
~/src/e344/games.moo
~/src/e344/monkeys.moo
~/src/en-us/monkeys.ini
źródło
shopt -s globstar
, zobacz moją edycję. Jeśli są tylko dwa poziomy, możesz użyć,*/*.*
a fragment kodu będzie działał w dowolnej powłoce.oszukiwanie znaleźć wiersz poleceń:
właściwie obejście do wywoływania skryptu bash w find LOL.
= P
źródło
happy rm -rf /
! Ten rodzaj kodu zasługuje na -1.Yay" rm -rf / "Rox0r.avi
, znowu jest jak problem…-exec bash -c 'command which uses "$1"' bash '{}' ';'
. Cóż, i tak jest to zupełnie bezcelowe.