Extracting names from filename in Bash The Next CEO of Stack Overflowbash escaping and find commandUnexpected anwer from the following regex?Removing a string of files with renameExtracting URL links from a FileExtracting specific data in a file using regexExclude directories from inotifywaitHow to specify a filename while extracting audio using youtube-dl?Bash create custom stringRegular expressions VS Filename globbingRegular expression to pull db table names from .sql files

What is meant by "large scale tonal organization?"

TikZ: How to reverse arrow direction without switching start/end point?

Running a General Election and the European Elections together

Grabbing quick drinks

How I can get glyphs from a fraktur font and use them as identifiers?

Writing differences on a blackboard

Why specifically branches as firewood on the Altar?

Do I need to write [sic] when a number is less than 10 but isn't written out?

Is there a difference between "Fahrstuhl" and "Aufzug"

Is the D&D universe the same as the Forgotten Realms universe?

Is it okay to majorly distort historical facts while writing a fiction story?

Why do airplanes bank sharply to the right after air-to-air refueling?

What happened in Rome, when the western empire "fell"?

Easy to read palindrome checker

Help understanding this unsettling image of Titan, Epimetheus, and Saturn's rings?

Recycling old answers

What flight has the highest ratio of timezone difference to flight time?

What steps are necessary to read a Modern SSD in Medieval Europe?

RigExpert AA-35 - Interpreting The Information

Can you be charged for obstruction for refusing to answer questions?

Is micro rebar a better way to reinforce concrete than rebar?

Unclear about dynamic binding

Legal workarounds for testamentary trust perceived as unfair

Axiom Schema vs Axiom



Extracting names from filename in Bash



The Next CEO of Stack Overflowbash escaping and find commandUnexpected anwer from the following regex?Removing a string of files with renameExtracting URL links from a FileExtracting specific data in a file using regexExclude directories from inotifywaitHow to specify a filename while extracting audio using youtube-dl?Bash create custom stringRegular expressions VS Filename globbingRegular expression to pull db table names from .sql files










4















I have a directory filled with thousands of files in the format LastnameFirstnameYYYYMMDD.pdf. The last and first name will always been in title case.



I'd like to extract the last name so I can move these files to a directory structure of first letter of last name/lastname/full filename. Example: DoeJohn20190327 would be moved to D/Doe/DoeJohn20190327










share|improve this question









New contributor




Joseph Moor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.















  • 3





    Check out 'sed' and 'awk'

    – Tintin
    2 days ago











  • I'm not sure if the final destination of the file DoeJohn20190327.pdf is like this: D/Doe/DoeJohn20190327/DoeJohn20190327.pdf or D/Doe/DoeJohn20190327/DoeJohn20190327.pdf ?

    – Philippe Delteil
    yesterday












  • This is a work order (using this site as a code-writing service AKA give me the codez). Why is it accepted?

    – Peter Mortensen
    yesterday
















4















I have a directory filled with thousands of files in the format LastnameFirstnameYYYYMMDD.pdf. The last and first name will always been in title case.



I'd like to extract the last name so I can move these files to a directory structure of first letter of last name/lastname/full filename. Example: DoeJohn20190327 would be moved to D/Doe/DoeJohn20190327










share|improve this question









New contributor




Joseph Moor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.















  • 3





    Check out 'sed' and 'awk'

    – Tintin
    2 days ago











  • I'm not sure if the final destination of the file DoeJohn20190327.pdf is like this: D/Doe/DoeJohn20190327/DoeJohn20190327.pdf or D/Doe/DoeJohn20190327/DoeJohn20190327.pdf ?

    – Philippe Delteil
    yesterday












  • This is a work order (using this site as a code-writing service AKA give me the codez). Why is it accepted?

    – Peter Mortensen
    yesterday














4












4








4


0






I have a directory filled with thousands of files in the format LastnameFirstnameYYYYMMDD.pdf. The last and first name will always been in title case.



I'd like to extract the last name so I can move these files to a directory structure of first letter of last name/lastname/full filename. Example: DoeJohn20190327 would be moved to D/Doe/DoeJohn20190327










share|improve this question









New contributor




Joseph Moor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












I have a directory filled with thousands of files in the format LastnameFirstnameYYYYMMDD.pdf. The last and first name will always been in title case.



I'd like to extract the last name so I can move these files to a directory structure of first letter of last name/lastname/full filename. Example: DoeJohn20190327 would be moved to D/Doe/DoeJohn20190327







regex






share|improve this question









New contributor




Joseph Moor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




Joseph Moor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited yesterday









Peter Mortensen

1,03421016




1,03421016






New contributor




Joseph Moor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 2 days ago









Joseph MoorJoseph Moor

211




211




New contributor




Joseph Moor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Joseph Moor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Joseph Moor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







  • 3





    Check out 'sed' and 'awk'

    – Tintin
    2 days ago











  • I'm not sure if the final destination of the file DoeJohn20190327.pdf is like this: D/Doe/DoeJohn20190327/DoeJohn20190327.pdf or D/Doe/DoeJohn20190327/DoeJohn20190327.pdf ?

    – Philippe Delteil
    yesterday












  • This is a work order (using this site as a code-writing service AKA give me the codez). Why is it accepted?

    – Peter Mortensen
    yesterday













  • 3





    Check out 'sed' and 'awk'

    – Tintin
    2 days ago











  • I'm not sure if the final destination of the file DoeJohn20190327.pdf is like this: D/Doe/DoeJohn20190327/DoeJohn20190327.pdf or D/Doe/DoeJohn20190327/DoeJohn20190327.pdf ?

    – Philippe Delteil
    yesterday












  • This is a work order (using this site as a code-writing service AKA give me the codez). Why is it accepted?

    – Peter Mortensen
    yesterday








3




3





Check out 'sed' and 'awk'

– Tintin
2 days ago





Check out 'sed' and 'awk'

– Tintin
2 days ago













I'm not sure if the final destination of the file DoeJohn20190327.pdf is like this: D/Doe/DoeJohn20190327/DoeJohn20190327.pdf or D/Doe/DoeJohn20190327/DoeJohn20190327.pdf ?

– Philippe Delteil
yesterday






I'm not sure if the final destination of the file DoeJohn20190327.pdf is like this: D/Doe/DoeJohn20190327/DoeJohn20190327.pdf or D/Doe/DoeJohn20190327/DoeJohn20190327.pdf ?

– Philippe Delteil
yesterday














This is a work order (using this site as a code-writing service AKA give me the codez). Why is it accepted?

– Peter Mortensen
yesterday






This is a work order (using this site as a code-writing service AKA give me the codez). Why is it accepted?

– Peter Mortensen
yesterday











2 Answers
2






active

oldest

votes


















5














Here you have a solution. I tested it an it creates the folders as you explained.



for filename in *.pdf
do
echo "Processing file $filename "
first_letter="$filename:0:1"
mkdir -p $first_letter #if already exists won't print error
last_name=$(echo $filename | sed 's/([^[:blank:]])([[:upper:]])/1 2/g' |awk 'print $1')
mkdir -p $first_letter/$last_name
mv $filename $first_letter/$last_name
done





share|improve this answer
































    4














    If the lastname is always the shortest trailing string staring with an upper case letter (there are no compound lastnames for example) you could use a shell parameter expansion of the form $parameter%pattern in place of a regex solution.



    Ex.



    for f in [[:upper:]]*[[:upper:]]*; do 
    d="$f:0:1/$f%[[:upper:]]*/"
    echo mkdir -p "$d"
    echo mv "$f" "$d"
    done
    mkdir -p D/Doe/
    mv DoeJohn20190327 D/Doe/


    Remove the echos when you are satisfied that it is doing the right thing.



    See for example Parameter Expansion






    share|improve this answer























      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
      );



      );






      Joseph Moor is a new contributor. Be nice, and check out our Code of Conduct.









      draft saved

      draft discarded


















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1129576%2fextracting-names-from-filename-in-bash%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      5














      Here you have a solution. I tested it an it creates the folders as you explained.



      for filename in *.pdf
      do
      echo "Processing file $filename "
      first_letter="$filename:0:1"
      mkdir -p $first_letter #if already exists won't print error
      last_name=$(echo $filename | sed 's/([^[:blank:]])([[:upper:]])/1 2/g' |awk 'print $1')
      mkdir -p $first_letter/$last_name
      mv $filename $first_letter/$last_name
      done





      share|improve this answer





























        5














        Here you have a solution. I tested it an it creates the folders as you explained.



        for filename in *.pdf
        do
        echo "Processing file $filename "
        first_letter="$filename:0:1"
        mkdir -p $first_letter #if already exists won't print error
        last_name=$(echo $filename | sed 's/([^[:blank:]])([[:upper:]])/1 2/g' |awk 'print $1')
        mkdir -p $first_letter/$last_name
        mv $filename $first_letter/$last_name
        done





        share|improve this answer



























          5












          5








          5







          Here you have a solution. I tested it an it creates the folders as you explained.



          for filename in *.pdf
          do
          echo "Processing file $filename "
          first_letter="$filename:0:1"
          mkdir -p $first_letter #if already exists won't print error
          last_name=$(echo $filename | sed 's/([^[:blank:]])([[:upper:]])/1 2/g' |awk 'print $1')
          mkdir -p $first_letter/$last_name
          mv $filename $first_letter/$last_name
          done





          share|improve this answer















          Here you have a solution. I tested it an it creates the folders as you explained.



          for filename in *.pdf
          do
          echo "Processing file $filename "
          first_letter="$filename:0:1"
          mkdir -p $first_letter #if already exists won't print error
          last_name=$(echo $filename | sed 's/([^[:blank:]])([[:upper:]])/1 2/g' |awk 'print $1')
          mkdir -p $first_letter/$last_name
          mv $filename $first_letter/$last_name
          done






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited yesterday

























          answered 2 days ago









          Philippe DelteilPhilippe Delteil

          5601422




          5601422























              4














              If the lastname is always the shortest trailing string staring with an upper case letter (there are no compound lastnames for example) you could use a shell parameter expansion of the form $parameter%pattern in place of a regex solution.



              Ex.



              for f in [[:upper:]]*[[:upper:]]*; do 
              d="$f:0:1/$f%[[:upper:]]*/"
              echo mkdir -p "$d"
              echo mv "$f" "$d"
              done
              mkdir -p D/Doe/
              mv DoeJohn20190327 D/Doe/


              Remove the echos when you are satisfied that it is doing the right thing.



              See for example Parameter Expansion






              share|improve this answer



























                4














                If the lastname is always the shortest trailing string staring with an upper case letter (there are no compound lastnames for example) you could use a shell parameter expansion of the form $parameter%pattern in place of a regex solution.



                Ex.



                for f in [[:upper:]]*[[:upper:]]*; do 
                d="$f:0:1/$f%[[:upper:]]*/"
                echo mkdir -p "$d"
                echo mv "$f" "$d"
                done
                mkdir -p D/Doe/
                mv DoeJohn20190327 D/Doe/


                Remove the echos when you are satisfied that it is doing the right thing.



                See for example Parameter Expansion






                share|improve this answer

























                  4












                  4








                  4







                  If the lastname is always the shortest trailing string staring with an upper case letter (there are no compound lastnames for example) you could use a shell parameter expansion of the form $parameter%pattern in place of a regex solution.



                  Ex.



                  for f in [[:upper:]]*[[:upper:]]*; do 
                  d="$f:0:1/$f%[[:upper:]]*/"
                  echo mkdir -p "$d"
                  echo mv "$f" "$d"
                  done
                  mkdir -p D/Doe/
                  mv DoeJohn20190327 D/Doe/


                  Remove the echos when you are satisfied that it is doing the right thing.



                  See for example Parameter Expansion






                  share|improve this answer













                  If the lastname is always the shortest trailing string staring with an upper case letter (there are no compound lastnames for example) you could use a shell parameter expansion of the form $parameter%pattern in place of a regex solution.



                  Ex.



                  for f in [[:upper:]]*[[:upper:]]*; do 
                  d="$f:0:1/$f%[[:upper:]]*/"
                  echo mkdir -p "$d"
                  echo mv "$f" "$d"
                  done
                  mkdir -p D/Doe/
                  mv DoeJohn20190327 D/Doe/


                  Remove the echos when you are satisfied that it is doing the right thing.



                  See for example Parameter Expansion







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered yesterday









                  steeldriversteeldriver

                  70.5k11114187




                  70.5k11114187




















                      Joseph Moor is a new contributor. Be nice, and check out our Code of Conduct.









                      draft saved

                      draft discarded


















                      Joseph Moor is a new contributor. Be nice, and check out our Code of Conduct.












                      Joseph Moor is a new contributor. Be nice, and check out our Code of Conduct.











                      Joseph Moor is a new contributor. Be nice, and check out our Code of Conduct.














                      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%2f1129576%2fextracting-names-from-filename-in-bash%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

                      រឿង រ៉ូមេអូ និង ហ្ស៊ុយលីយេ សង្ខេបរឿង តួអង្គ បញ្ជីណែនាំ

                      QGIS export composer to PDF scale the map [closed] Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Print Composer QGIS 2.6, how to export image?QGIS 2.8.1 print composer won't export all OpenCycleMap base layer tilesSave Print/Map QGIS composer view as PNG/PDF using Python (without changing anything in visible layout)?Export QGIS Print Composer PDF with searchable text labelsQGIS Print Composer does not change from landscape to portrait orientation?How can I avoid map size and scale changes in print composer?Fuzzy PDF export in QGIS running on macSierra OSExport the legend into its 100% size using Print ComposerScale-dependent rendering in QGIS PDF output

                      PDF-ში გადმოწერა სანავიგაციო მენიუproject page