Mam nieszczęście pochodzić ze środowiska MS-DOS - ale przynajmniej to sprawia, że doceniam, jak potężniejszy jest Linux. Pracowałem nad tym, aby mój Linux-Fu osiągnął najwyższy poziom, ale jest kilka rzeczy, które można zrobić z DOS-em, ale nie jestem pewien, jak najłatwiej to zrobić z Linuksem:
Zmienianie nazw wielu plików - za pomocą dwóch symboli wieloznacznych
c:\> dir
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
c:\>rename *.txt *.bak
c:\> dir
Directory of c:\
file1.bak
file2.bak
file3.bak
file4.bak
Wiem, że mógłbym find -exec
tutaj użyć , ale można użyć krótszej składni - być może mv
ze specjalnymi flagami lub składnią? Wydaje mi się, że kluczem do tego jest drugi *
symbol wieloznaczny, ponieważ linux nie powinien mieć problemu z pierwszym (tzn. Wiem, jak wybrać pliki, których nazwę chcę zmienić za pomocą symboli wieloznacznych)
Zmiana nazwy pojedynczego pliku - za pomocą jednego symbolu wieloznacznego
c:\> dir
Directory of c:\
file1.txt
c:\>rename file1.txt *.bak
c:\> dir
Directory of c:\
file1.bak
Byłoby to szczególnie pomocne przy zmianie nazwy długich i nieporęcznych nazw plików. Pomyślałem, że może przydałbym się mv file1.txt $1.bak
do tego, file1.txt.bak
co też byłoby akceptowalne, ale nie jestem pewien, czy można odwołać się do $1
parametru w linii za pomocą polecenia powłoki. Ponownie w tym konkretnym przypadku jest po prostu wygodne, jak ms-dos potępia *
znak wieloznaczny, który ma być używany jako rodzaj dopasowania przechwytywania / zamiany dla części nazwy pliku.
Filtrowanie list katalogów za pomocą symboli wieloznacznych
c:\> dir
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
text.txt
\temp (directory)
c:\> dir file*
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
c:\> t*
Directory of c:\
text.txt
\temp (directory)
Nie jestem pewien, jaka jest właściwa składnia do robienia tego ls
, ani czy jest to w ogóle możliwe. Jeśli zrobię coś takiego, ls t*
to od razu przejdzie do katalogów t
. Moje obejście albo było używane, find . --max-depth 1 -iname "t*"
albo coś w tym rodzaju ls -al | grep t
- żadne z nich nie jest tak krótkie i proste, jak dir t*
jest.
W końcu wiem, że mogę skonfigurować aliasy, aby skrócić te długie polecenia, ale chciałbym nauczyć się gotowego linux-fu do robienia tych rzeczy, ponieważ czasami jesteś podłączony do zdalnego systemu lub pracujesz na nowej maszynie.
Więc jak mogę mv
i ls
pliki w taki sam sposób, jak kiedyś dir
i rename
pliki?