Sample Header Ad - 728x90

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