How can I prepend filenames with ascending numbers like 1_ 2_?












5















How can I add numbers to the files in one directory?



In one directory I have files like below:



fileA
fileB
fileC
fileD


I want to prepend ascending numbers to them, like this:



1_fileA
2_fileB
3_fileC
4_fileD


Thank you in advance.










share|improve this question

























  • @PerlDuck Yes, I have to enumarte them changing their name.

    – paweljvn
    Nov 23 '18 at 17:53











  • Related: askubuntu.com/q/839959

    – Justin
    Nov 24 '18 at 5:25
















5















How can I add numbers to the files in one directory?



In one directory I have files like below:



fileA
fileB
fileC
fileD


I want to prepend ascending numbers to them, like this:



1_fileA
2_fileB
3_fileC
4_fileD


Thank you in advance.










share|improve this question

























  • @PerlDuck Yes, I have to enumarte them changing their name.

    – paweljvn
    Nov 23 '18 at 17:53











  • Related: askubuntu.com/q/839959

    – Justin
    Nov 24 '18 at 5:25














5












5








5








How can I add numbers to the files in one directory?



In one directory I have files like below:



fileA
fileB
fileC
fileD


I want to prepend ascending numbers to them, like this:



1_fileA
2_fileB
3_fileC
4_fileD


Thank you in advance.










share|improve this question
















How can I add numbers to the files in one directory?



In one directory I have files like below:



fileA
fileB
fileC
fileD


I want to prepend ascending numbers to them, like this:



1_fileA
2_fileB
3_fileC
4_fileD


Thank you in advance.







command-line bash batch-rename






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 '18 at 18:54









Zanna

50.3k13133241




50.3k13133241










asked Nov 23 '18 at 17:50









paweljvnpaweljvn

466




466













  • @PerlDuck Yes, I have to enumarte them changing their name.

    – paweljvn
    Nov 23 '18 at 17:53











  • Related: askubuntu.com/q/839959

    – Justin
    Nov 24 '18 at 5:25



















  • @PerlDuck Yes, I have to enumarte them changing their name.

    – paweljvn
    Nov 23 '18 at 17:53











  • Related: askubuntu.com/q/839959

    – Justin
    Nov 24 '18 at 5:25

















@PerlDuck Yes, I have to enumarte them changing their name.

– paweljvn
Nov 23 '18 at 17:53





@PerlDuck Yes, I have to enumarte them changing their name.

– paweljvn
Nov 23 '18 at 17:53













Related: askubuntu.com/q/839959

– Justin
Nov 24 '18 at 5:25





Related: askubuntu.com/q/839959

– Justin
Nov 24 '18 at 5:25










6 Answers
6






active

oldest

votes


















8














One of the solutions:



cd <your dir> then run in bash (copy and paste in command-line):



n=1; for f in *; do mv "$f" "$((n++))_$f"; done


Bash script case:



#!/bin/bash
n=1
for f in *
do
if [ "$f" = "rename.sh" ]
then
continue
fi
mv "$f" "$((n++))_$f"
done


save it as rename.sh to dir with files to rename, chmod +x rename.sh then run it ./rename.sh






share|improve this answer


























  • but can I also run this from vim? I mean to put your code in vim as #!/bin/bash and the run it from the command line?

    – paweljvn
    Nov 23 '18 at 18:09











  • Sure. But you need add this simple command to bash file. Then You need to solve self-renaming of this rename.sh file.

    – mature
    Nov 23 '18 at 18:15






  • 1





    Added example with bash file. If you need something like bash command to run it in any file system place, you need use first example saved in bash file and add this bash file to PATH with alias.

    – mature
    Nov 23 '18 at 18:33



















7














If there are more than 9 files, I would use printf to pad the number to get the expected sort order, like this



n=0
for f in *
do printf -v new "%2d$((++n))_$f"
echo mv -v -- "$f" "$new"
done


Remove echo when you see the correct result.



Explanation



In this line, do printf -v new "%2d$((++n))_$f" we create a format for the new filenames and put it into the variable new.



%2d is a 2 digit decimal number. Instead of 2d, you can use 3d etc to get another leading 0 (if you have more than 99 files).



((++n)) increments the variable n (which we set to 0 at the start of the script). Since it is iterated once each time the loop is run, files get incremented name prefixes.



-v makes mv print what will be changed.



-- in the mv statement is to prevent filenames that start with - being interpreted as options.






share|improve this answer

































    4
















    That’s a job for rename:



    rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *


    This defines a variable, increases it if it’s not set (else it would start with 0 instead of 1) and replaces the beginning of the filename with the number increasing it every time. You can change the format easily, e.g. to make it three-digit (001, 002, …) use "%03d_". Running it with -n only prints the changes, to actually perform the renaming remove this flag.



    Example run



    $ ls -1
    fileA
    fileB
    fileC
    fileD
    $ rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
    rename(fileA, 1_fileA)
    rename(fileB, 2_fileB)
    rename(fileC, 3_fileC)
    rename(fileD, 4_fileD)
    $ rename 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
    $ ls -1
    1_fileA
    2_fileB
    3_fileC
    4_fileD





    share|improve this answer































      2















      1. Open your directory in Nautilus.


      2. Highlight all of the files.


      3. Right-click, and select "Rename..." from the context menu.


      4. On the Rename dialog, click the +Add button.


      5. Select "1,2,3,4" under "Automatic Numbers"



      6. Then, in the Rename dialog, in the text entry field, insert an
        underscore "_" character between "[1, 2, 3]" and "[Original file name]".



        It should look like "[1, 2, 3]_[Original file name]"



      7. Click the Rename button.



      Select "1,2,3,4" in the Rename dialog



      The renamed files






      share|improve this answer































        0














        One option is



        cd /path/to/folder/
        ls -1v | rename -n -v 's/^/sprintf("%02d_", ++our$i)/e'



        • This works fine, except with the file names with new line "n". Switch '-1v'takes care of spaces and tabs,


        • Other commands posted here change the order of files with numbers e.g. 10a comes before 1a.


        • Whichever suits in a situation.



        I had some time to test all these commands. Here are the results.



        $ ls
        001abc.txt '10a bc.txt' 1abc.txt '2ab c.txt' 'a'$'t''bc.txt'

        $ ls -1v | rename -n -v 's/^/sprintf("%02d_", ++our$i)/e'
        Reading filenames from file handle (GLOB(0x55cb57991b28))
        rename(001abc.txt, 01_001abc.txt)
        rename(1abc.txt, 02_1abc.txt)
        rename(2ab c.txt, 03_2ab c.txt)
        rename(10a bc.txt, 04_10a bc.txt)
        rename(a bc.txt, 05_a bc.txt)

        $ n=1; for f in *; do echo mv "$f" "$((n++))_$f"; done
        mv 001abc.txt 1_001abc.txt
        mv 10a bc.txt 2_10a bc.txt
        mv 1abc.txt 3_1abc.txt
        mv 2ab c.txt 4_2ab c.txt
        mv a bc.txt 5_a bc.txt

        $ for f in *; do printf -v new "%2d$((++n))_$f"; echo mv -v -- "$f" "$new"; done
        mv -v -- 001abc.txt 09_001abc.txt
        mv -v -- 10a bc.txt 010_10a bc.txt
        mv -v -- 1abc.txt 011_1abc.txt
        mv -v -- 2ab c.txt 012_2ab c.txt
        mv -v -- a bc.txt 013_a bc.txt

        $ ./rename.sh
        mv 001abc.txt 1_001abc.txt
        mv 10a bc.txt 2_10a bc.txt
        mv 1abc.txt 3_1abc.txt
        mv 2ab c.txt 4_2ab c.txt
        mv a bc.txt 5_a bc.txt

        $ rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
        rename(001abc.txt, 1_001abc.txt)
        rename(10a bc.txt, 2_10a bc.txt)
        rename(1abc.txt, 3_1abc.txt)
        rename(2ab c.txt, 4_2ab c.txt)
        rename(a bc.txt, 5_a bc.txt)
        rename(rename.sh, 6_rename.sh)

        $ for f in *; do printf -v new "%2d$((++n))_$f"; echo mv -v -- "$f" "$new"; done
        mv -v -- 001abc.txt 01_001abc.txt
        mv -v -- 10a bc.txt 02_10a bc.txt
        mv -v -- 1abc.txt 03_1abc.txt
        mv -v -- 2ab c.txt 04_2ab c.txt
        mv -v -- a bc.txt 05_a bc.txt
        mv -v -- rename.sh 06_rename.sh





        share|improve this answer

































          -2














          pyrenamer is also a dead easy solution






          share|improve this answer
























          • Please don't just post some tool as an answer. Demonstrate how it solves the problem in the answer.

            – Melebius
            Nov 27 '18 at 8:25











          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "89"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1095456%2fhow-can-i-prepend-filenames-with-ascending-numbers-like-1-2%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          6 Answers
          6






          active

          oldest

          votes








          6 Answers
          6






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          8














          One of the solutions:



          cd <your dir> then run in bash (copy and paste in command-line):



          n=1; for f in *; do mv "$f" "$((n++))_$f"; done


          Bash script case:



          #!/bin/bash
          n=1
          for f in *
          do
          if [ "$f" = "rename.sh" ]
          then
          continue
          fi
          mv "$f" "$((n++))_$f"
          done


          save it as rename.sh to dir with files to rename, chmod +x rename.sh then run it ./rename.sh






          share|improve this answer


























          • but can I also run this from vim? I mean to put your code in vim as #!/bin/bash and the run it from the command line?

            – paweljvn
            Nov 23 '18 at 18:09











          • Sure. But you need add this simple command to bash file. Then You need to solve self-renaming of this rename.sh file.

            – mature
            Nov 23 '18 at 18:15






          • 1





            Added example with bash file. If you need something like bash command to run it in any file system place, you need use first example saved in bash file and add this bash file to PATH with alias.

            – mature
            Nov 23 '18 at 18:33
















          8














          One of the solutions:



          cd <your dir> then run in bash (copy and paste in command-line):



          n=1; for f in *; do mv "$f" "$((n++))_$f"; done


          Bash script case:



          #!/bin/bash
          n=1
          for f in *
          do
          if [ "$f" = "rename.sh" ]
          then
          continue
          fi
          mv "$f" "$((n++))_$f"
          done


          save it as rename.sh to dir with files to rename, chmod +x rename.sh then run it ./rename.sh






          share|improve this answer


























          • but can I also run this from vim? I mean to put your code in vim as #!/bin/bash and the run it from the command line?

            – paweljvn
            Nov 23 '18 at 18:09











          • Sure. But you need add this simple command to bash file. Then You need to solve self-renaming of this rename.sh file.

            – mature
            Nov 23 '18 at 18:15






          • 1





            Added example with bash file. If you need something like bash command to run it in any file system place, you need use first example saved in bash file and add this bash file to PATH with alias.

            – mature
            Nov 23 '18 at 18:33














          8












          8








          8







          One of the solutions:



          cd <your dir> then run in bash (copy and paste in command-line):



          n=1; for f in *; do mv "$f" "$((n++))_$f"; done


          Bash script case:



          #!/bin/bash
          n=1
          for f in *
          do
          if [ "$f" = "rename.sh" ]
          then
          continue
          fi
          mv "$f" "$((n++))_$f"
          done


          save it as rename.sh to dir with files to rename, chmod +x rename.sh then run it ./rename.sh






          share|improve this answer















          One of the solutions:



          cd <your dir> then run in bash (copy and paste in command-line):



          n=1; for f in *; do mv "$f" "$((n++))_$f"; done


          Bash script case:



          #!/bin/bash
          n=1
          for f in *
          do
          if [ "$f" = "rename.sh" ]
          then
          continue
          fi
          mv "$f" "$((n++))_$f"
          done


          save it as rename.sh to dir with files to rename, chmod +x rename.sh then run it ./rename.sh







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 23 '18 at 18:30

























          answered Nov 23 '18 at 18:02









          maturemature

          1,694524




          1,694524













          • but can I also run this from vim? I mean to put your code in vim as #!/bin/bash and the run it from the command line?

            – paweljvn
            Nov 23 '18 at 18:09











          • Sure. But you need add this simple command to bash file. Then You need to solve self-renaming of this rename.sh file.

            – mature
            Nov 23 '18 at 18:15






          • 1





            Added example with bash file. If you need something like bash command to run it in any file system place, you need use first example saved in bash file and add this bash file to PATH with alias.

            – mature
            Nov 23 '18 at 18:33



















          • but can I also run this from vim? I mean to put your code in vim as #!/bin/bash and the run it from the command line?

            – paweljvn
            Nov 23 '18 at 18:09











          • Sure. But you need add this simple command to bash file. Then You need to solve self-renaming of this rename.sh file.

            – mature
            Nov 23 '18 at 18:15






          • 1





            Added example with bash file. If you need something like bash command to run it in any file system place, you need use first example saved in bash file and add this bash file to PATH with alias.

            – mature
            Nov 23 '18 at 18:33

















          but can I also run this from vim? I mean to put your code in vim as #!/bin/bash and the run it from the command line?

          – paweljvn
          Nov 23 '18 at 18:09





          but can I also run this from vim? I mean to put your code in vim as #!/bin/bash and the run it from the command line?

          – paweljvn
          Nov 23 '18 at 18:09













          Sure. But you need add this simple command to bash file. Then You need to solve self-renaming of this rename.sh file.

          – mature
          Nov 23 '18 at 18:15





          Sure. But you need add this simple command to bash file. Then You need to solve self-renaming of this rename.sh file.

          – mature
          Nov 23 '18 at 18:15




          1




          1





          Added example with bash file. If you need something like bash command to run it in any file system place, you need use first example saved in bash file and add this bash file to PATH with alias.

          – mature
          Nov 23 '18 at 18:33





          Added example with bash file. If you need something like bash command to run it in any file system place, you need use first example saved in bash file and add this bash file to PATH with alias.

          – mature
          Nov 23 '18 at 18:33













          7














          If there are more than 9 files, I would use printf to pad the number to get the expected sort order, like this



          n=0
          for f in *
          do printf -v new "%2d$((++n))_$f"
          echo mv -v -- "$f" "$new"
          done


          Remove echo when you see the correct result.



          Explanation



          In this line, do printf -v new "%2d$((++n))_$f" we create a format for the new filenames and put it into the variable new.



          %2d is a 2 digit decimal number. Instead of 2d, you can use 3d etc to get another leading 0 (if you have more than 99 files).



          ((++n)) increments the variable n (which we set to 0 at the start of the script). Since it is iterated once each time the loop is run, files get incremented name prefixes.



          -v makes mv print what will be changed.



          -- in the mv statement is to prevent filenames that start with - being interpreted as options.






          share|improve this answer






























            7














            If there are more than 9 files, I would use printf to pad the number to get the expected sort order, like this



            n=0
            for f in *
            do printf -v new "%2d$((++n))_$f"
            echo mv -v -- "$f" "$new"
            done


            Remove echo when you see the correct result.



            Explanation



            In this line, do printf -v new "%2d$((++n))_$f" we create a format for the new filenames and put it into the variable new.



            %2d is a 2 digit decimal number. Instead of 2d, you can use 3d etc to get another leading 0 (if you have more than 99 files).



            ((++n)) increments the variable n (which we set to 0 at the start of the script). Since it is iterated once each time the loop is run, files get incremented name prefixes.



            -v makes mv print what will be changed.



            -- in the mv statement is to prevent filenames that start with - being interpreted as options.






            share|improve this answer




























              7












              7








              7







              If there are more than 9 files, I would use printf to pad the number to get the expected sort order, like this



              n=0
              for f in *
              do printf -v new "%2d$((++n))_$f"
              echo mv -v -- "$f" "$new"
              done


              Remove echo when you see the correct result.



              Explanation



              In this line, do printf -v new "%2d$((++n))_$f" we create a format for the new filenames and put it into the variable new.



              %2d is a 2 digit decimal number. Instead of 2d, you can use 3d etc to get another leading 0 (if you have more than 99 files).



              ((++n)) increments the variable n (which we set to 0 at the start of the script). Since it is iterated once each time the loop is run, files get incremented name prefixes.



              -v makes mv print what will be changed.



              -- in the mv statement is to prevent filenames that start with - being interpreted as options.






              share|improve this answer















              If there are more than 9 files, I would use printf to pad the number to get the expected sort order, like this



              n=0
              for f in *
              do printf -v new "%2d$((++n))_$f"
              echo mv -v -- "$f" "$new"
              done


              Remove echo when you see the correct result.



              Explanation



              In this line, do printf -v new "%2d$((++n))_$f" we create a format for the new filenames and put it into the variable new.



              %2d is a 2 digit decimal number. Instead of 2d, you can use 3d etc to get another leading 0 (if you have more than 99 files).



              ((++n)) increments the variable n (which we set to 0 at the start of the script). Since it is iterated once each time the loop is run, files get incremented name prefixes.



              -v makes mv print what will be changed.



              -- in the mv statement is to prevent filenames that start with - being interpreted as options.







              share|improve this answer














              share|improve this answer



              share|improve this answer








              edited Nov 26 '18 at 21:24

























              answered Nov 23 '18 at 19:05









              ZannaZanna

              50.3k13133241




              50.3k13133241























                  4
















                  That’s a job for rename:



                  rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *


                  This defines a variable, increases it if it’s not set (else it would start with 0 instead of 1) and replaces the beginning of the filename with the number increasing it every time. You can change the format easily, e.g. to make it three-digit (001, 002, …) use "%03d_". Running it with -n only prints the changes, to actually perform the renaming remove this flag.



                  Example run



                  $ ls -1
                  fileA
                  fileB
                  fileC
                  fileD
                  $ rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
                  rename(fileA, 1_fileA)
                  rename(fileB, 2_fileB)
                  rename(fileC, 3_fileC)
                  rename(fileD, 4_fileD)
                  $ rename 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
                  $ ls -1
                  1_fileA
                  2_fileB
                  3_fileC
                  4_fileD





                  share|improve this answer




























                    4
















                    That’s a job for rename:



                    rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *


                    This defines a variable, increases it if it’s not set (else it would start with 0 instead of 1) and replaces the beginning of the filename with the number increasing it every time. You can change the format easily, e.g. to make it three-digit (001, 002, …) use "%03d_". Running it with -n only prints the changes, to actually perform the renaming remove this flag.



                    Example run



                    $ ls -1
                    fileA
                    fileB
                    fileC
                    fileD
                    $ rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
                    rename(fileA, 1_fileA)
                    rename(fileB, 2_fileB)
                    rename(fileC, 3_fileC)
                    rename(fileD, 4_fileD)
                    $ rename 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
                    $ ls -1
                    1_fileA
                    2_fileB
                    3_fileC
                    4_fileD





                    share|improve this answer


























                      4












                      4








                      4









                      That’s a job for rename:



                      rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *


                      This defines a variable, increases it if it’s not set (else it would start with 0 instead of 1) and replaces the beginning of the filename with the number increasing it every time. You can change the format easily, e.g. to make it three-digit (001, 002, …) use "%03d_". Running it with -n only prints the changes, to actually perform the renaming remove this flag.



                      Example run



                      $ ls -1
                      fileA
                      fileB
                      fileC
                      fileD
                      $ rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
                      rename(fileA, 1_fileA)
                      rename(fileB, 2_fileB)
                      rename(fileC, 3_fileC)
                      rename(fileD, 4_fileD)
                      $ rename 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
                      $ ls -1
                      1_fileA
                      2_fileB
                      3_fileC
                      4_fileD





                      share|improve this answer















                      That’s a job for rename:



                      rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *


                      This defines a variable, increases it if it’s not set (else it would start with 0 instead of 1) and replaces the beginning of the filename with the number increasing it every time. You can change the format easily, e.g. to make it three-digit (001, 002, …) use "%03d_". Running it with -n only prints the changes, to actually perform the renaming remove this flag.



                      Example run



                      $ ls -1
                      fileA
                      fileB
                      fileC
                      fileD
                      $ rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
                      rename(fileA, 1_fileA)
                      rename(fileB, 2_fileB)
                      rename(fileC, 3_fileC)
                      rename(fileD, 4_fileD)
                      $ rename 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
                      $ ls -1
                      1_fileA
                      2_fileB
                      3_fileC
                      4_fileD






                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered Nov 23 '18 at 20:27









                      dessertdessert

                      22.3k56198




                      22.3k56198























                          2















                          1. Open your directory in Nautilus.


                          2. Highlight all of the files.


                          3. Right-click, and select "Rename..." from the context menu.


                          4. On the Rename dialog, click the +Add button.


                          5. Select "1,2,3,4" under "Automatic Numbers"



                          6. Then, in the Rename dialog, in the text entry field, insert an
                            underscore "_" character between "[1, 2, 3]" and "[Original file name]".



                            It should look like "[1, 2, 3]_[Original file name]"



                          7. Click the Rename button.



                          Select "1,2,3,4" in the Rename dialog



                          The renamed files






                          share|improve this answer




























                            2















                            1. Open your directory in Nautilus.


                            2. Highlight all of the files.


                            3. Right-click, and select "Rename..." from the context menu.


                            4. On the Rename dialog, click the +Add button.


                            5. Select "1,2,3,4" under "Automatic Numbers"



                            6. Then, in the Rename dialog, in the text entry field, insert an
                              underscore "_" character between "[1, 2, 3]" and "[Original file name]".



                              It should look like "[1, 2, 3]_[Original file name]"



                            7. Click the Rename button.



                            Select "1,2,3,4" in the Rename dialog



                            The renamed files






                            share|improve this answer


























                              2












                              2








                              2








                              1. Open your directory in Nautilus.


                              2. Highlight all of the files.


                              3. Right-click, and select "Rename..." from the context menu.


                              4. On the Rename dialog, click the +Add button.


                              5. Select "1,2,3,4" under "Automatic Numbers"



                              6. Then, in the Rename dialog, in the text entry field, insert an
                                underscore "_" character between "[1, 2, 3]" and "[Original file name]".



                                It should look like "[1, 2, 3]_[Original file name]"



                              7. Click the Rename button.



                              Select "1,2,3,4" in the Rename dialog



                              The renamed files






                              share|improve this answer














                              1. Open your directory in Nautilus.


                              2. Highlight all of the files.


                              3. Right-click, and select "Rename..." from the context menu.


                              4. On the Rename dialog, click the +Add button.


                              5. Select "1,2,3,4" under "Automatic Numbers"



                              6. Then, in the Rename dialog, in the text entry field, insert an
                                underscore "_" character between "[1, 2, 3]" and "[Original file name]".



                                It should look like "[1, 2, 3]_[Original file name]"



                              7. Click the Rename button.



                              Select "1,2,3,4" in the Rename dialog



                              The renamed files







                              share|improve this answer












                              share|improve this answer



                              share|improve this answer










                              answered Nov 26 '18 at 22:13









                              PJ SinghPJ Singh

                              4,32022548




                              4,32022548























                                  0














                                  One option is



                                  cd /path/to/folder/
                                  ls -1v | rename -n -v 's/^/sprintf("%02d_", ++our$i)/e'



                                  • This works fine, except with the file names with new line "n". Switch '-1v'takes care of spaces and tabs,


                                  • Other commands posted here change the order of files with numbers e.g. 10a comes before 1a.


                                  • Whichever suits in a situation.



                                  I had some time to test all these commands. Here are the results.



                                  $ ls
                                  001abc.txt '10a bc.txt' 1abc.txt '2ab c.txt' 'a'$'t''bc.txt'

                                  $ ls -1v | rename -n -v 's/^/sprintf("%02d_", ++our$i)/e'
                                  Reading filenames from file handle (GLOB(0x55cb57991b28))
                                  rename(001abc.txt, 01_001abc.txt)
                                  rename(1abc.txt, 02_1abc.txt)
                                  rename(2ab c.txt, 03_2ab c.txt)
                                  rename(10a bc.txt, 04_10a bc.txt)
                                  rename(a bc.txt, 05_a bc.txt)

                                  $ n=1; for f in *; do echo mv "$f" "$((n++))_$f"; done
                                  mv 001abc.txt 1_001abc.txt
                                  mv 10a bc.txt 2_10a bc.txt
                                  mv 1abc.txt 3_1abc.txt
                                  mv 2ab c.txt 4_2ab c.txt
                                  mv a bc.txt 5_a bc.txt

                                  $ for f in *; do printf -v new "%2d$((++n))_$f"; echo mv -v -- "$f" "$new"; done
                                  mv -v -- 001abc.txt 09_001abc.txt
                                  mv -v -- 10a bc.txt 010_10a bc.txt
                                  mv -v -- 1abc.txt 011_1abc.txt
                                  mv -v -- 2ab c.txt 012_2ab c.txt
                                  mv -v -- a bc.txt 013_a bc.txt

                                  $ ./rename.sh
                                  mv 001abc.txt 1_001abc.txt
                                  mv 10a bc.txt 2_10a bc.txt
                                  mv 1abc.txt 3_1abc.txt
                                  mv 2ab c.txt 4_2ab c.txt
                                  mv a bc.txt 5_a bc.txt

                                  $ rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
                                  rename(001abc.txt, 1_001abc.txt)
                                  rename(10a bc.txt, 2_10a bc.txt)
                                  rename(1abc.txt, 3_1abc.txt)
                                  rename(2ab c.txt, 4_2ab c.txt)
                                  rename(a bc.txt, 5_a bc.txt)
                                  rename(rename.sh, 6_rename.sh)

                                  $ for f in *; do printf -v new "%2d$((++n))_$f"; echo mv -v -- "$f" "$new"; done
                                  mv -v -- 001abc.txt 01_001abc.txt
                                  mv -v -- 10a bc.txt 02_10a bc.txt
                                  mv -v -- 1abc.txt 03_1abc.txt
                                  mv -v -- 2ab c.txt 04_2ab c.txt
                                  mv -v -- a bc.txt 05_a bc.txt
                                  mv -v -- rename.sh 06_rename.sh





                                  share|improve this answer






























                                    0














                                    One option is



                                    cd /path/to/folder/
                                    ls -1v | rename -n -v 's/^/sprintf("%02d_", ++our$i)/e'



                                    • This works fine, except with the file names with new line "n". Switch '-1v'takes care of spaces and tabs,


                                    • Other commands posted here change the order of files with numbers e.g. 10a comes before 1a.


                                    • Whichever suits in a situation.



                                    I had some time to test all these commands. Here are the results.



                                    $ ls
                                    001abc.txt '10a bc.txt' 1abc.txt '2ab c.txt' 'a'$'t''bc.txt'

                                    $ ls -1v | rename -n -v 's/^/sprintf("%02d_", ++our$i)/e'
                                    Reading filenames from file handle (GLOB(0x55cb57991b28))
                                    rename(001abc.txt, 01_001abc.txt)
                                    rename(1abc.txt, 02_1abc.txt)
                                    rename(2ab c.txt, 03_2ab c.txt)
                                    rename(10a bc.txt, 04_10a bc.txt)
                                    rename(a bc.txt, 05_a bc.txt)

                                    $ n=1; for f in *; do echo mv "$f" "$((n++))_$f"; done
                                    mv 001abc.txt 1_001abc.txt
                                    mv 10a bc.txt 2_10a bc.txt
                                    mv 1abc.txt 3_1abc.txt
                                    mv 2ab c.txt 4_2ab c.txt
                                    mv a bc.txt 5_a bc.txt

                                    $ for f in *; do printf -v new "%2d$((++n))_$f"; echo mv -v -- "$f" "$new"; done
                                    mv -v -- 001abc.txt 09_001abc.txt
                                    mv -v -- 10a bc.txt 010_10a bc.txt
                                    mv -v -- 1abc.txt 011_1abc.txt
                                    mv -v -- 2ab c.txt 012_2ab c.txt
                                    mv -v -- a bc.txt 013_a bc.txt

                                    $ ./rename.sh
                                    mv 001abc.txt 1_001abc.txt
                                    mv 10a bc.txt 2_10a bc.txt
                                    mv 1abc.txt 3_1abc.txt
                                    mv 2ab c.txt 4_2ab c.txt
                                    mv a bc.txt 5_a bc.txt

                                    $ rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
                                    rename(001abc.txt, 1_001abc.txt)
                                    rename(10a bc.txt, 2_10a bc.txt)
                                    rename(1abc.txt, 3_1abc.txt)
                                    rename(2ab c.txt, 4_2ab c.txt)
                                    rename(a bc.txt, 5_a bc.txt)
                                    rename(rename.sh, 6_rename.sh)

                                    $ for f in *; do printf -v new "%2d$((++n))_$f"; echo mv -v -- "$f" "$new"; done
                                    mv -v -- 001abc.txt 01_001abc.txt
                                    mv -v -- 10a bc.txt 02_10a bc.txt
                                    mv -v -- 1abc.txt 03_1abc.txt
                                    mv -v -- 2ab c.txt 04_2ab c.txt
                                    mv -v -- a bc.txt 05_a bc.txt
                                    mv -v -- rename.sh 06_rename.sh





                                    share|improve this answer




























                                      0












                                      0








                                      0







                                      One option is



                                      cd /path/to/folder/
                                      ls -1v | rename -n -v 's/^/sprintf("%02d_", ++our$i)/e'



                                      • This works fine, except with the file names with new line "n". Switch '-1v'takes care of spaces and tabs,


                                      • Other commands posted here change the order of files with numbers e.g. 10a comes before 1a.


                                      • Whichever suits in a situation.



                                      I had some time to test all these commands. Here are the results.



                                      $ ls
                                      001abc.txt '10a bc.txt' 1abc.txt '2ab c.txt' 'a'$'t''bc.txt'

                                      $ ls -1v | rename -n -v 's/^/sprintf("%02d_", ++our$i)/e'
                                      Reading filenames from file handle (GLOB(0x55cb57991b28))
                                      rename(001abc.txt, 01_001abc.txt)
                                      rename(1abc.txt, 02_1abc.txt)
                                      rename(2ab c.txt, 03_2ab c.txt)
                                      rename(10a bc.txt, 04_10a bc.txt)
                                      rename(a bc.txt, 05_a bc.txt)

                                      $ n=1; for f in *; do echo mv "$f" "$((n++))_$f"; done
                                      mv 001abc.txt 1_001abc.txt
                                      mv 10a bc.txt 2_10a bc.txt
                                      mv 1abc.txt 3_1abc.txt
                                      mv 2ab c.txt 4_2ab c.txt
                                      mv a bc.txt 5_a bc.txt

                                      $ for f in *; do printf -v new "%2d$((++n))_$f"; echo mv -v -- "$f" "$new"; done
                                      mv -v -- 001abc.txt 09_001abc.txt
                                      mv -v -- 10a bc.txt 010_10a bc.txt
                                      mv -v -- 1abc.txt 011_1abc.txt
                                      mv -v -- 2ab c.txt 012_2ab c.txt
                                      mv -v -- a bc.txt 013_a bc.txt

                                      $ ./rename.sh
                                      mv 001abc.txt 1_001abc.txt
                                      mv 10a bc.txt 2_10a bc.txt
                                      mv 1abc.txt 3_1abc.txt
                                      mv 2ab c.txt 4_2ab c.txt
                                      mv a bc.txt 5_a bc.txt

                                      $ rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
                                      rename(001abc.txt, 1_001abc.txt)
                                      rename(10a bc.txt, 2_10a bc.txt)
                                      rename(1abc.txt, 3_1abc.txt)
                                      rename(2ab c.txt, 4_2ab c.txt)
                                      rename(a bc.txt, 5_a bc.txt)
                                      rename(rename.sh, 6_rename.sh)

                                      $ for f in *; do printf -v new "%2d$((++n))_$f"; echo mv -v -- "$f" "$new"; done
                                      mv -v -- 001abc.txt 01_001abc.txt
                                      mv -v -- 10a bc.txt 02_10a bc.txt
                                      mv -v -- 1abc.txt 03_1abc.txt
                                      mv -v -- 2ab c.txt 04_2ab c.txt
                                      mv -v -- a bc.txt 05_a bc.txt
                                      mv -v -- rename.sh 06_rename.sh





                                      share|improve this answer















                                      One option is



                                      cd /path/to/folder/
                                      ls -1v | rename -n -v 's/^/sprintf("%02d_", ++our$i)/e'



                                      • This works fine, except with the file names with new line "n". Switch '-1v'takes care of spaces and tabs,


                                      • Other commands posted here change the order of files with numbers e.g. 10a comes before 1a.


                                      • Whichever suits in a situation.



                                      I had some time to test all these commands. Here are the results.



                                      $ ls
                                      001abc.txt '10a bc.txt' 1abc.txt '2ab c.txt' 'a'$'t''bc.txt'

                                      $ ls -1v | rename -n -v 's/^/sprintf("%02d_", ++our$i)/e'
                                      Reading filenames from file handle (GLOB(0x55cb57991b28))
                                      rename(001abc.txt, 01_001abc.txt)
                                      rename(1abc.txt, 02_1abc.txt)
                                      rename(2ab c.txt, 03_2ab c.txt)
                                      rename(10a bc.txt, 04_10a bc.txt)
                                      rename(a bc.txt, 05_a bc.txt)

                                      $ n=1; for f in *; do echo mv "$f" "$((n++))_$f"; done
                                      mv 001abc.txt 1_001abc.txt
                                      mv 10a bc.txt 2_10a bc.txt
                                      mv 1abc.txt 3_1abc.txt
                                      mv 2ab c.txt 4_2ab c.txt
                                      mv a bc.txt 5_a bc.txt

                                      $ for f in *; do printf -v new "%2d$((++n))_$f"; echo mv -v -- "$f" "$new"; done
                                      mv -v -- 001abc.txt 09_001abc.txt
                                      mv -v -- 10a bc.txt 010_10a bc.txt
                                      mv -v -- 1abc.txt 011_1abc.txt
                                      mv -v -- 2ab c.txt 012_2ab c.txt
                                      mv -v -- a bc.txt 013_a bc.txt

                                      $ ./rename.sh
                                      mv 001abc.txt 1_001abc.txt
                                      mv 10a bc.txt 2_10a bc.txt
                                      mv 1abc.txt 3_1abc.txt
                                      mv 2ab c.txt 4_2ab c.txt
                                      mv a bc.txt 5_a bc.txt

                                      $ rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
                                      rename(001abc.txt, 1_001abc.txt)
                                      rename(10a bc.txt, 2_10a bc.txt)
                                      rename(1abc.txt, 3_1abc.txt)
                                      rename(2ab c.txt, 4_2ab c.txt)
                                      rename(a bc.txt, 5_a bc.txt)
                                      rename(rename.sh, 6_rename.sh)

                                      $ for f in *; do printf -v new "%2d$((++n))_$f"; echo mv -v -- "$f" "$new"; done
                                      mv -v -- 001abc.txt 01_001abc.txt
                                      mv -v -- 10a bc.txt 02_10a bc.txt
                                      mv -v -- 1abc.txt 03_1abc.txt
                                      mv -v -- 2ab c.txt 04_2ab c.txt
                                      mv -v -- a bc.txt 05_a bc.txt
                                      mv -v -- rename.sh 06_rename.sh






                                      share|improve this answer














                                      share|improve this answer



                                      share|improve this answer








                                      edited Nov 24 '18 at 14:43

























                                      answered Nov 24 '18 at 13:55









                                      VijayVijay

                                      1,5001618




                                      1,5001618























                                          -2














                                          pyrenamer is also a dead easy solution






                                          share|improve this answer
























                                          • Please don't just post some tool as an answer. Demonstrate how it solves the problem in the answer.

                                            – Melebius
                                            Nov 27 '18 at 8:25
















                                          -2














                                          pyrenamer is also a dead easy solution






                                          share|improve this answer
























                                          • Please don't just post some tool as an answer. Demonstrate how it solves the problem in the answer.

                                            – Melebius
                                            Nov 27 '18 at 8:25














                                          -2












                                          -2








                                          -2







                                          pyrenamer is also a dead easy solution






                                          share|improve this answer













                                          pyrenamer is also a dead easy solution







                                          share|improve this answer












                                          share|improve this answer



                                          share|improve this answer










                                          answered Nov 26 '18 at 22:42









                                          Carol McAnultyCarol McAnulty

                                          472




                                          472













                                          • Please don't just post some tool as an answer. Demonstrate how it solves the problem in the answer.

                                            – Melebius
                                            Nov 27 '18 at 8:25



















                                          • Please don't just post some tool as an answer. Demonstrate how it solves the problem in the answer.

                                            – Melebius
                                            Nov 27 '18 at 8:25

















                                          Please don't just post some tool as an answer. Demonstrate how it solves the problem in the answer.

                                          – Melebius
                                          Nov 27 '18 at 8:25





                                          Please don't just post some tool as an answer. Demonstrate how it solves the problem in the answer.

                                          – Melebius
                                          Nov 27 '18 at 8:25


















                                          draft saved

                                          draft discarded




















































                                          Thanks for contributing an answer to Ask Ubuntu!


                                          • Please be sure to answer the question. Provide details and share your research!

                                          But avoid



                                          • Asking for help, clarification, or responding to other answers.

                                          • Making statements based on opinion; back them up with references or personal experience.


                                          To learn more, see our tips on writing great answers.




                                          draft saved


                                          draft discarded














                                          StackExchange.ready(
                                          function () {
                                          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1095456%2fhow-can-i-prepend-filenames-with-ascending-numbers-like-1-2%23new-answer', 'question_page');
                                          }
                                          );

                                          Post as a guest















                                          Required, but never shown





















































                                          Required, but never shown














                                          Required, but never shown












                                          Required, but never shown







                                          Required, but never shown

































                                          Required, but never shown














                                          Required, but never shown












                                          Required, but never shown







                                          Required, but never shown







                                          Popular posts from this blog

                                          Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

                                          ComboBox Display Member on multiple fields

                                          Is it possible to collect Nectar points via Trainline?