[UPDATE-1]:Wenn möglich, geben Sie mir Nachteile als Motivation, um die einfachsten Befehle zu lernen.
Ich habe also eine Datei im Verzeichnis:
ls | grep *.mp4
video.mp4
Ich verwende diesen Befehl, um Dateien nach dem Zufallsprinzip umzubenennen und in ein anderes Verzeichnis zu verschieben:
for a in *.mp4; do mv -n "$a" "${a/*/$RANDOM.mp4}"; done; mv *.mp4 /home/misdeed/Documents
Ist ok, ich bekomme einen zufälligen Namen für video.mp4
cd Documents; ls | grep *.mp4
19889.mp4
Frage:
Anwendung:
a="This is name file"
echo $a
Dies ist der Dateiname
zum Umbenennen von *.mp4 (nicht zufällig) und zum Abrufen
Dies ist der Name file.mp4
Ich brauche so etwas:
a="This is name file"
COMMAND FOR RENAME BUT WITHOUT $RANDOM. I WANT USE $a in renamed file
Antwort1
Nehmen wir an, der ursprüngliche Name ist im Voraus bekannt und lautet video.mp4
. Sie benennen es mit
mv video.mp4 "$a".mp4
Anmerkungen:
- Wenn die Variable leer (oder nicht gesetzt) ist, lautet der endgültige Name
.mp4
. Namen, die mit einem Punkt (.
) beginnen, sind „versteckt“,ls
sie werden einfach übersprungen, Sie müssenls -a
sie sehen. - Wenn bereits eine Datei mit dem Zielnamen vorhanden ist, geht diese verloren und die vorherige
video.mp4
Datei übernimmt ihren Namen. Um Missgeschicke zu vermeiden, beachten Siemv -i
; es wird eine Bestätigungsaufforderung angezeigt, wenn der Zielpfad existiert.
Antwort2
Ich nehme an, Sie möchten den neuen zufälligen Dateinamen drucken? In diesem Fall ist es am einfachsten, den Wert Ihrer Zufallsvariablen wiederzuverwenden.
for file in *.mp4; do
RANDOM_NAME="${file/*/$RANDOM.mp4}";
mv -n "$file" /home/misdeed/Documents/"$RANDOM_NAME";
echo "This is name $RANDOM_NAME.mp4";
done