Führen Sie unter bash den Befehl aus shopt -s extglob
(oder fügen Sie ihn in Ihren ein ~/.bashrc
), und Sie können zusätzliche Muster verwenden , die reguläre Ausdrücke mit einer ungewöhnlichen Syntax (von ksh geerbt) bereitstellen. Sie können diese Muster natürlich auch in ksh und danach auch in zsh verwenden setopt ksh_glob
.
$ shopt -s extglob
$ ls /opt/somedir/@(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
In zsh können Sie direkt (foo|bar)
als Muster verwenden.
% ls /opt/somedir/(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
Beachten Sie, dass der Befehl mit dem vollständigen Pfad aufgerufen wird. Wenn Sie den Befehl mit einem kurzen Pfad aufrufen möchten, müssen Sie das Verzeichnis irgendwie ändern. Dies (cd /opt/somedir && somecommand aa bb cc)
ist bei weitem der einfachste Weg.
Gilles 'SO - hör auf böse zu sein'
quelle
Sie können filtern mit
egrep
:So finden Sie alle Textdateien:
quelle
Erstens verweise ich Sie auf: Niemals analysieren , niemals . Der richtige und kanonische Weg, um das zu tun, was Sie wollen, ist mit find .
Beispielsweise:
Ich benutze in
-name
der Regel statt-regex
wie es einfacher ist. Aber ein Regex passt zu Ihrem Anwendungsfall. Sie sollten den Befehl ohne-exec
das erste Mal ausführen , um sicherzustellen, dass es sich tatsächlich um die Dateien handelt, die Sie verschieben / löschen möchten.quelle