How to send output of convert to a writable directory in bash?











up vote
2
down vote

favorite












I want to convert .tbl files to .csv in /data/ directory which I've got read-only access.
I'm using this command:



for i in `ls *.tbl`; do
sed 's/|$//' $i > ${i/tbl/csv}
echo $i
done


But I'm getting:



-bash: supplier.csv: Permission denied


And I don't know how to change the script such that it could save the output in a writable directory.
Any idea how to solve it?










share|improve this question









New contributor




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
























    up vote
    2
    down vote

    favorite












    I want to convert .tbl files to .csv in /data/ directory which I've got read-only access.
    I'm using this command:



    for i in `ls *.tbl`; do
    sed 's/|$//' $i > ${i/tbl/csv}
    echo $i
    done


    But I'm getting:



    -bash: supplier.csv: Permission denied


    And I don't know how to change the script such that it could save the output in a writable directory.
    Any idea how to solve it?










    share|improve this question









    New contributor




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






















      up vote
      2
      down vote

      favorite









      up vote
      2
      down vote

      favorite











      I want to convert .tbl files to .csv in /data/ directory which I've got read-only access.
      I'm using this command:



      for i in `ls *.tbl`; do
      sed 's/|$//' $i > ${i/tbl/csv}
      echo $i
      done


      But I'm getting:



      -bash: supplier.csv: Permission denied


      And I don't know how to change the script such that it could save the output in a writable directory.
      Any idea how to solve it?










      share|improve this question









      New contributor




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











      I want to convert .tbl files to .csv in /data/ directory which I've got read-only access.
      I'm using this command:



      for i in `ls *.tbl`; do
      sed 's/|$//' $i > ${i/tbl/csv}
      echo $i
      done


      But I'm getting:



      -bash: supplier.csv: Permission denied


      And I don't know how to change the script such that it could save the output in a writable directory.
      Any idea how to solve it?







      command-line bash






      share|improve this question









      New contributor




      Marzieh Heidari 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




      Marzieh Heidari 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 2 days ago









      wjandrea

      7,86342258




      7,86342258






      New contributor




      Marzieh Heidari 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









      Marzieh Heidari

      1136




      1136




      New contributor




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





      New contributor





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






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






















          2 Answers
          2






          active

          oldest

          votes

















          up vote
          4
          down vote



          accepted










          Just specify a different path:



          for tbl in *.tbl ; do
          sed 's/|$//' "$tbl" > /another/path/"${tbl%.tbl}".csv
          echo "$tbl"
          done


          Few minor fixes:




          1. Don't parse the output of ls, just iterate over an expanded wildcard pattern.


          2. Double quote variables (filenames can contain whitespace).


          3. I used Remove Matching Suffix instead of Substitution.







          share|improve this answer






























            up vote
            4
            down vote















            Just specify the path (here /path/to/writable/dir/) before the filename:



            for i in *.tbl; do
            sed 's/|$//' "$i" >"/path/to/writable/dir/${i/%tbl/csv}"
            echo "$i"
            done


            You should never parse the output of ls (Why?) and always quote variables like $i here. Adding % at the pattern’s beginning makes it match against the end of the string so that a filename like tbl.tbl becomes tbl.csv rather than csv.tbl. Read more about Parameter expansion here on bash-hackers.org.






            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',
              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
              });


              }
              });






              Marzieh Heidari 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%2f1095420%2fhow-to-send-output-of-convert-to-a-writable-directory-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








              up vote
              4
              down vote



              accepted










              Just specify a different path:



              for tbl in *.tbl ; do
              sed 's/|$//' "$tbl" > /another/path/"${tbl%.tbl}".csv
              echo "$tbl"
              done


              Few minor fixes:




              1. Don't parse the output of ls, just iterate over an expanded wildcard pattern.


              2. Double quote variables (filenames can contain whitespace).


              3. I used Remove Matching Suffix instead of Substitution.







              share|improve this answer



























                up vote
                4
                down vote



                accepted










                Just specify a different path:



                for tbl in *.tbl ; do
                sed 's/|$//' "$tbl" > /another/path/"${tbl%.tbl}".csv
                echo "$tbl"
                done


                Few minor fixes:




                1. Don't parse the output of ls, just iterate over an expanded wildcard pattern.


                2. Double quote variables (filenames can contain whitespace).


                3. I used Remove Matching Suffix instead of Substitution.







                share|improve this answer

























                  up vote
                  4
                  down vote



                  accepted







                  up vote
                  4
                  down vote



                  accepted






                  Just specify a different path:



                  for tbl in *.tbl ; do
                  sed 's/|$//' "$tbl" > /another/path/"${tbl%.tbl}".csv
                  echo "$tbl"
                  done


                  Few minor fixes:




                  1. Don't parse the output of ls, just iterate over an expanded wildcard pattern.


                  2. Double quote variables (filenames can contain whitespace).


                  3. I used Remove Matching Suffix instead of Substitution.







                  share|improve this answer














                  Just specify a different path:



                  for tbl in *.tbl ; do
                  sed 's/|$//' "$tbl" > /another/path/"${tbl%.tbl}".csv
                  echo "$tbl"
                  done


                  Few minor fixes:




                  1. Don't parse the output of ls, just iterate over an expanded wildcard pattern.


                  2. Double quote variables (filenames can contain whitespace).


                  3. I used Remove Matching Suffix instead of Substitution.








                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited 2 days ago

























                  answered 2 days ago









                  choroba

                  6,56411730




                  6,56411730
























                      up vote
                      4
                      down vote















                      Just specify the path (here /path/to/writable/dir/) before the filename:



                      for i in *.tbl; do
                      sed 's/|$//' "$i" >"/path/to/writable/dir/${i/%tbl/csv}"
                      echo "$i"
                      done


                      You should never parse the output of ls (Why?) and always quote variables like $i here. Adding % at the pattern’s beginning makes it match against the end of the string so that a filename like tbl.tbl becomes tbl.csv rather than csv.tbl. Read more about Parameter expansion here on bash-hackers.org.






                      share|improve this answer



























                        up vote
                        4
                        down vote















                        Just specify the path (here /path/to/writable/dir/) before the filename:



                        for i in *.tbl; do
                        sed 's/|$//' "$i" >"/path/to/writable/dir/${i/%tbl/csv}"
                        echo "$i"
                        done


                        You should never parse the output of ls (Why?) and always quote variables like $i here. Adding % at the pattern’s beginning makes it match against the end of the string so that a filename like tbl.tbl becomes tbl.csv rather than csv.tbl. Read more about Parameter expansion here on bash-hackers.org.






                        share|improve this answer

























                          up vote
                          4
                          down vote










                          up vote
                          4
                          down vote











                          Just specify the path (here /path/to/writable/dir/) before the filename:



                          for i in *.tbl; do
                          sed 's/|$//' "$i" >"/path/to/writable/dir/${i/%tbl/csv}"
                          echo "$i"
                          done


                          You should never parse the output of ls (Why?) and always quote variables like $i here. Adding % at the pattern’s beginning makes it match against the end of the string so that a filename like tbl.tbl becomes tbl.csv rather than csv.tbl. Read more about Parameter expansion here on bash-hackers.org.






                          share|improve this answer
















                          Just specify the path (here /path/to/writable/dir/) before the filename:



                          for i in *.tbl; do
                          sed 's/|$//' "$i" >"/path/to/writable/dir/${i/%tbl/csv}"
                          echo "$i"
                          done


                          You should never parse the output of ls (Why?) and always quote variables like $i here. Adding % at the pattern’s beginning makes it match against the end of the string so that a filename like tbl.tbl becomes tbl.csv rather than csv.tbl. Read more about Parameter expansion here on bash-hackers.org.







                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited 2 days ago

























                          answered 2 days ago









                          dessert

                          21.2k55896




                          21.2k55896






















                              Marzieh Heidari is a new contributor. Be nice, and check out our Code of Conduct.










                               

                              draft saved


                              draft discarded


















                              Marzieh Heidari is a new contributor. Be nice, and check out our Code of Conduct.













                              Marzieh Heidari is a new contributor. Be nice, and check out our Code of Conduct.












                              Marzieh Heidari 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%2f1095420%2fhow-to-send-output-of-convert-to-a-writable-directory-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

                              Quarter-circle Tiles

                              build a pushdown automaton that recognizes the reverse language of a given pushdown automaton?

                              Mont Emei