Angenommen, ich habe Dateien mit dem Namen "*.data.done"
. Jetzt möchte ich sie (rekursiv) umbenennen zurück zu „* .data“, dann diejenigen, die also hier "pattern"
Zeichen aus Xargs streichen {} in bash
enthält we go:
grep -l -R -F "pattern" --include '*.data.done' * | xargs -I{} mv {} ${{}::-5}
Nun, das Strippen von ‚DONE‘ funktioniert nicht (bash 4.3.11):
bash: ${{}::-5}: bad substitution
Wie kann ich das am einfachsten machen?
ich ein kleines Skript erstellen würde: 'für Datei in "$ @"; Mach mv "$ file" "$ {file% .done}"; in einer Datei 'moveit.sh' und dann' xargs sh moveit.sh'. Es ist einfach und das Bereinigen der 'moveit.sh' Datei ist kein großer Aufwand. –
'{}' ist keine Shell-Variable, Sie können keine Shell-Parameter-Erweiterung darauf ausführen. – 123