Rename a set of files according to a specific scheme, with rename back option
0
votes
5
answers
157
views
In Linux in a directory there are files,
ls -1
shows me this output :
file1.1-rvr
file1.2-rvr
file1.3
file1.4-rvr
file1.5
file1.6-rvr
file2.1
file2.2
file3.1
file3.10
file3.2-rvr
file3.3-rvr
file3.4
file3.5
file3.6
file3.7
file3.8
file3.9
file4.1
file4.2
file5.1-rvr
file5.2
file6.1
file6.2
file6.3
file6.4
file7.1
file7.2-rvr
file7.3
file7.4
file7.5
file7.6
file8.1
file8.2
file8.3-rvr
file8.4
In this directory are only files with file names that begin with file
.
There are no other files in there.
file1.*
is a package
file2.*
is a (different) package too
and so on.
Each package should have its own random name.
For the randomness i will use.
cat /dev/urandom | tr -cd 'a-zA-Z0-9' | head -c $(shuf -i 8-32 -n 1)
In each package, the .
should be renamed to .part.rar
.
Files with -rvr
should renamed too.
For example:
file3.1
file3.10
file3.2-rvr
file3.3-rvr
file3.4
file3.5
file3.6
file3.7
file3.8
file3.9
should be renamed for testing and experimenting to:
rfiqDLhZF5XxRcJXkqR1LrwniDi.part01.rar
rfiqDLhZF5XxRcJXkqR1LrwniDi.part10.rar
rfiqDLhZF5XxRcJXkqR1LrwniDi.part02.rar
rfiqDLhZF5XxRcJXkqR1LrwniDi.part03.rar
rfiqDLhZF5XxRcJXkqR1LrwniDi.part04.rar
rfiqDLhZF5XxRcJXkqR1LrwniDi.part05.rar
rfiqDLhZF5XxRcJXkqR1LrwniDi.part06.rar
rfiqDLhZF5XxRcJXkqR1LrwniDi.part07.rar
rfiqDLhZF5XxRcJXkqR1LrwniDi.part08.rar
rfiqDLhZF5XxRcJXkqR1LrwniDi.part09.rar
(If there are a *.10, 1 must be rename to 01.)
But there must be a way to note (in a file ../renamed
) the renaming in order to rename them back to the original filenames later.
For renaming all files in random names, i can use this, but i dont know how to work with the .part.rar renaming.
for file in file*; do
while true; do
RANDOM_NAME=$(cat /dev/urandom | tr -cd 'a-zA-Z0-9' | head -c $(shuf -i 8-32 -n 1));
if [ ! -f ${RANDOM_NAME} ]; then
echo "${file}" "${RANDOM_NAME}" >> ../renamed
mv "${file}" "${RANDOM_NAME}";
break;
fi
done
done
For renaming back, i can use this one liner :
`while read old new rest ; do mv $new $old ; done .rar and back again.
EDIT
I am looking for a way to do that in Bash.
Here is a complete list with the current file names and the new filename scheme:
current name new name
------------ --------------------------------------
file1.1-rvr --> cL5617iQyc8kT5GwNoi.part1.rar
file1.2-rvr --> cL5617iQyc8kT5GwNoi.part2.rar
file1.3 --> cL5617iQyc8kT5GwNoi.part3.rar
file1.4-rvr --> cL5617iQyc8kT5GwNoi.part4.rar
file1.5 --> cL5617iQyc8kT5GwNoi.part5.rar
file1.6-rvr --> cL5617iQyc8kT5GwNoi.part6.rar
file2.1 --> QuMPmQjppRSuG3QL9xy5.part1.rar
file2.2 --> QuMPmQjppRSuG3QL9xy5.part2.rar
file3.1 --> rfiqDLhZF5XxRcJXkqR1LrwniDi.part01.rar
file3.10 --> rfiqDLhZF5XxRcJXkqR1LrwniDi.part02.rar
file3.2-rvr --> rfiqDLhZF5XxRcJXkqR1LrwniDi.part03.rar
file3.3-rvr --> rfiqDLhZF5XxRcJXkqR1LrwniDi.part04.rar
file3.4 --> rfiqDLhZF5XxRcJXkqR1LrwniDi.part05.rar
file3.5 --> rfiqDLhZF5XxRcJXkqR1LrwniDi.part06.rar
file3.6 --> rfiqDLhZF5XxRcJXkqR1LrwniDi.part07.rar
file3.7 --> rfiqDLhZF5XxRcJXkqR1LrwniDi.part08.rar
file3.8 --> rfiqDLhZF5XxRcJXkqR1LrwniDi.part09.rar
file3.9 --> rfiqDLhZF5XxRcJXkqR1LrwniDi.part10.rar
file4.1 --> cLYtCmUW.part1.rar
file4.2 --> cLYtCmUW.part2.rar
file5.1-rvr --> uXjOgcreTUCC7aHKkXeWPL1SiVdX.part1.rar
file5.2 --> uXjOgcreTUCC7aHKkXeWPL1SiVdX.part2.rar
file6.1 --> 9CcsiBYcuASF0ECoS.part1.rar
file6.2 --> 9CcsiBYcuASF0ECoS.part2.rar
file6.3 --> 9CcsiBYcuASF0ECoS.part3.rar
file6.4 --> 9CcsiBYcuASF0ECoS.part4.rar
file7.1 --> SXKymGb5Z9ImrQ0K51IUAA.part1.rar
file7.2-rvr --> SXKymGb5Z9ImrQ0K51IUAA.part2.rar
file7.3 --> SXKymGb5Z9ImrQ0K51IUAA.part3.rar
file7.4 --> SXKymGb5Z9ImrQ0K51IUAA.part4.rar
file7.5 --> SXKymGb5Z9ImrQ0K51IUAA.part5.rar
file7.6 --> SXKymGb5Z9ImrQ0K51IUAA.part6.rar
file8.1 --> 5poLf4stv6.part1.rar
file8.2 --> 5poLf4stv6.part2.rar
file8.3-rvr --> 5poLf4stv6.part3.rar
file8.4 --> 5poLf4stv6.part4.rar
But all before .partX(X).rar
should be random and generate with :
cat /dev/urandom | tr -cd 'a-zA-Z0-9' | head -c $(shuf -i 8-32 -n 1)
Asked by Banana
(189 rep)
Jun 20, 2025, 01:32 AM
Last activity: Jun 24, 2025, 11:13 AM
Last activity: Jun 24, 2025, 11:13 AM