Dla przypomnienia [...]konstrukcja konstruuje pojedynczy znak, którym może być dowolny ze znaków między nawiasami. Więc twoje wyrażenie pasuje JJA lub Jug( Jod [Jun], uod [Jul]i god [Aug]), ale nie oznacza skrótów miesiąca, które chciałeś dopasować.
tripleee
Odpowiedzi:
12
Możesz dopasować do wielu wzorów, takich jak:
awk '/Jun/ || /July/ || /Aug/'<(ls -lrh)
Zwraca wszystkie dopasowania dla czerwca, lipca lub sierpnia. Nie potrzebujesz printinstrukcji, ponieważ jest awkto akcja domyślna.
Ewentualnie zaznacz tylko ostatnie pole, aby zabezpieczyć się przed mało prawdopodobnym przypadkiem, gdy sama nazwa pliku jest datą:
stat -c "%n %y"*| awk '$NF ~ /2013-0[678]/'
Od man stat:
-c --format=FORMATuse the specified FORMAT instead of the default; output a new‐
line after each useof FORMAT%y time oflast modification, human-readable%n file name
To także dobry przykład. Nigdy wcześniej nie sprawdzałem STAT. dzięki za wspaniałe informacje
OmiPenguin,
Może zmieni się ... | awk '$NF ~ /2013-0[678]/'tylko sprawdzić pole wyjściowe ostatni, w (prawdopodobnie?) Nawet, że plik jest nazwa pasuje do wyrażenia regularnego, nawet jeśli data nie.
tripleee
3
lsto polecenie wyświetlające informacje o plikach w postaci czytelnej dla człowieka. Nie używaj go w skryptach .
Polecenie znajdowania plików w drzewie katalogów spełniających określone kryteria to find. Jeśli masz funkcję GNU find (tj. Niewbudowany Linux lub Cygwin) lub FreeBSD (np. FreeBSD lub OSX), możesz użyć -newermtdo dopasowania plików, które zostały ostatnio zmodyfikowane po określonej dacie.
Dodaj rok, jeśli chcesz dopasować pliki w określonym roku, a nie rok kalendarzowy, w którym skrypt jest uruchamiany.
Jeśli twoja implementacja find nie ma -newermt, musisz się pogodzić z tym -newer, co porównuje datę findznalezienia pliku ze stałym plikiem. służy touchdo tworzenia plików tymczasowych z datą, która ma być używana jako granica.
[...]
konstrukcja konstruuje pojedynczy znak, którym może być dowolny ze znaków między nawiasami. Więc twoje wyrażenie pasujeJJA
lubJug
(J
od[Jun]
,u
od[Jul]
ig
od[Aug]
), ale nie oznacza skrótów miesiąca, które chciałeś dopasować.Odpowiedzi:
Możesz dopasować do wielu wzorów, takich jak:
Zwraca wszystkie dopasowania dla czerwca, lipca lub sierpnia. Nie potrzebujesz
print
instrukcji, ponieważ jestawk
to akcja domyślna.źródło
awk '/Jun|Jul|Aug/'
lubawk '/Ju[nl]|Aug/'
Zasadniczo analizowanie danych wyjściowych ls jest bardzo złym pomysłem . Lepszym sposobem na robienie tego, co chcesz
Ewentualnie zaznacz tylko ostatnie pole, aby zabezpieczyć się przed mało prawdopodobnym przypadkiem, gdy sama nazwa pliku jest datą:
Od
man stat
:źródło
| awk '$NF ~ /2013-0[678]/'
tylko sprawdzić pole wyjściowe ostatni, w (prawdopodobnie?) Nawet, że plik jest nazwa pasuje do wyrażenia regularnego, nawet jeśli data nie.ls
to polecenie wyświetlające informacje o plikach w postaci czytelnej dla człowieka. Nie używaj go w skryptach .Polecenie znajdowania plików w drzewie katalogów spełniających określone kryteria to
find
. Jeśli masz funkcję GNU find (tj. Niewbudowany Linux lub Cygwin) lub FreeBSD (np. FreeBSD lub OSX), możesz użyć-newermt
do dopasowania plików, które zostały ostatnio zmodyfikowane po określonej dacie.Dodaj rok, jeśli chcesz dopasować pliki w określonym roku, a nie rok kalendarzowy, w którym skrypt jest uruchamiany.
Jeśli twoja implementacja find nie ma
-newermt
, musisz się pogodzić z tym-newer
, co porównuje datęfind
znalezienia pliku ze stałym plikiem. służytouch
do tworzenia plików tymczasowych z datą, która ma być używana jako granica.źródło