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

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

                      Crop image to path created in TikZ? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Crop an inserted image?TikZ pictures does not appear in posterImage behind and beyond crop marks?Tikz picture as large as possible on A4 PageTransparency vs image compression dilemmaHow to crop background from image automatically?Image does not cropTikzexternal capturing crop marks when externalizing pgfplots?How to include image path that contains a dollar signCrop image with left size given

                      Romeo and Juliet ContentsCharactersSynopsisSourcesDate and textThemes and motifsCriticism and interpretationLegacyScene by sceneSee alsoNotes and referencesSourcesExternal linksNavigation menu"Consumer Price Index (estimate) 1800–"10.2307/28710160037-3222287101610.1093/res/II.5.31910.2307/45967845967810.2307/2869925286992510.1525/jams.1982.35.3.03a00050"Dada Masilo: South African dancer who breaks the rules"10.1093/res/os-XV.57.1610.2307/28680942868094"Sweet Sorrow: Mann-Korman's Romeo and Juliet Closes Sept. 5 at MN's Ordway"the original10.2307/45957745957710.1017/CCOL0521570476.009"Ram Leela box office collections hit massive Rs 100 crore, pulverises prediction"Archived"Broadway Revival of Romeo and Juliet, Starring Orlando Bloom and Condola Rashad, Will Close Dec. 8"Archived10.1075/jhp.7.1.04hon"Wherefore art thou, Romeo? To make us laugh at Navy Pier"the original10.1093/gmo/9781561592630.article.O006772"Ram-leela Review Roundup: Critics Hail Film as Best Adaptation of Romeo and Juliet"Archived10.2307/31946310047-77293194631"Romeo and Juliet get Twitter treatment""Juliet's Nurse by Lois Leveen""Romeo and Juliet: Orlando Bloom's Broadway Debut Released in Theaters for Valentine's Day"Archived"Romeo and Juliet Has No Balcony"10.1093/gmo/9781561592630.article.O00778110.2307/2867423286742310.1076/enst.82.2.115.959510.1080/00138380601042675"A plague o' both your houses: error in GCSE exam paper forces apology""Juliet of the Five O'Clock Shadow, and Other Wonders"10.2307/33912430027-4321339124310.2307/28487440038-7134284874410.2307/29123140149-661129123144728341M"Weekender Guide: Shakespeare on The Drive""balcony"UK public library membership"romeo"UK public library membership10.1017/CCOL9780521844291"Post-Zionist Critique on Israel and the Palestinians Part III: Popular Culture"10.2307/25379071533-86140377-919X2537907"Capulets and Montagues: UK exam board admit mixing names up in Romeo and Juliet paper"Istoria Novellamente Ritrovata di Due Nobili Amanti2027/mdp.390150822329610820-750X"GCSE exam error: Board accidentally rewrites Shakespeare"10.2307/29176390149-66112917639"Exam board apologises after error in English GCSE paper which confused characters in Shakespeare's Romeo and Juliet""From Mariotto and Ganozza to Romeo and Guilietta: Metamorphoses of a Renaissance Tale"10.2307/37323537323510.2307/2867455286745510.2307/28678912867891"10 Questions for Taylor Swift"10.2307/28680922868092"Haymarket Theatre""The Zeffirelli Way: Revealing Talk by Florentine Director""Michael Smuin: 1938-2007 / Prolific dance director had showy career"The Life and Art of Edwin BoothRomeo and JulietRomeo and JulietRomeo and JulietRomeo and JulietEasy Read Romeo and JulietRomeo and Julieteeecb12003684p(data)4099369-3n8211610759dbe00d-a9e2-41a3-b2c1-977dd692899302814385X313670221313670221