Czy cat $(find ./ -type f -name "*.js" | sort) > dirname/.filenamepracowałbyś dla ciebie?
txtechhelp
@txtechhelp dzięki. jest blisko, ale pliki o nazwach 2.js i 3.js są umieszczane powyżej pliku /dirname/1.js. Jeśli to można naprawić, działałoby świetnie.
user5448026,
Mogę po prostu wstawić 1 przed nazwą reżysera, ale dobrze byłoby nie musieć tego robić.
user5448026,
Czy musisz dołączyć nazwę katalogu do swojej listy? A może potrzebujesz tylko nazw plików, skąd pochodzą?
Odpowiedzi:
0
grepjest niewłaściwym narzędziem do tego, częściowo dlatego, że emituje tylko wiersze z plików, które pasują do podanego wzorca (i prawdopodobnie chcesz wszystkie linie), a częściowo dlatego, że nie podałeś wzorca, więc używa pierwszej nazwy pliku jako wzór (co nie jest pomocne).
Wyświetlanie wszystkich *.jsplików jest dość łatwe:
find . -name '*.js'
Łączenie ich w jeden plik jest również łatwe:
find . -name '*.js' | xargs cat
Ale trudniej jest posortować je według porządku leksykalnego samej nazwy pliku, bez względu na katalog, w którym mogą się znajdować.
Po prostu sortnie wykona zadania i nie ma --keyopcji, która wybierze ostatnie pole, gdy liczba pól jest nieznana.
Poniższe polecenie sed używa do przeniesienia nazwy pliku na początek linii, sortuje ją, a następnie ponownie usuwa.
cat $(find ./ -type f -name "*.js" | sort) > dirname/.filename
pracowałbyś dla ciebie?Odpowiedzi:
grep
jest niewłaściwym narzędziem do tego, częściowo dlatego, że emituje tylko wiersze z plików, które pasują do podanego wzorca (i prawdopodobnie chcesz wszystkie linie), a częściowo dlatego, że nie podałeś wzorca, więc używa pierwszej nazwy pliku jako wzór (co nie jest pomocne).Wyświetlanie wszystkich
*.js
plików jest dość łatwe:Łączenie ich w jeden plik jest również łatwe:
Ale trudniej jest posortować je według porządku leksykalnego samej nazwy pliku, bez względu na katalog, w którym mogą się znajdować.
Po prostu
sort
nie wykona zadania i nie ma--key
opcji, która wybierze ostatnie pole, gdy liczba pól jest nieznana.Poniższe polecenie sed używa do przeniesienia nazwy pliku na początek linii, sortuje ją, a następnie ponownie usuwa.
To nie będzie działać poprawnie, jeśli w nazwach plików lub katalogów są spacje.
Następnie możesz wyodrębnić zawartość, dodając
cat
:źródło