Escape a backup date in a file name












3















I have been trying to:



cp file.csv file.$(date +%D).csv


But it fails because the filenames is: file.03/27/19.csv with the slash of separate directories.



And I have been trying again to:



cp file.csv file.$(printf "%q" $(date +%D)).csv


But it still fails.










share|improve this question

























  • You can not set a filename with slash characters: stackoverflow.com/questions/9847288/…

    – tres.14159
    9 hours ago











  • the problem is your use of the date format using the / character. You said it yourself, the shell is seeing them as directory markers. Try one of the many other options available from date. You might be able to get the / escaped so the filename uses the character code (like putting a space in a filename), but that is often problematic.

    – 0xSheepdog
    9 hours ago


















3















I have been trying to:



cp file.csv file.$(date +%D).csv


But it fails because the filenames is: file.03/27/19.csv with the slash of separate directories.



And I have been trying again to:



cp file.csv file.$(printf "%q" $(date +%D)).csv


But it still fails.










share|improve this question

























  • You can not set a filename with slash characters: stackoverflow.com/questions/9847288/…

    – tres.14159
    9 hours ago











  • the problem is your use of the date format using the / character. You said it yourself, the shell is seeing them as directory markers. Try one of the many other options available from date. You might be able to get the / escaped so the filename uses the character code (like putting a space in a filename), but that is often problematic.

    – 0xSheepdog
    9 hours ago
















3












3








3








I have been trying to:



cp file.csv file.$(date +%D).csv


But it fails because the filenames is: file.03/27/19.csv with the slash of separate directories.



And I have been trying again to:



cp file.csv file.$(printf "%q" $(date +%D)).csv


But it still fails.










share|improve this question
















I have been trying to:



cp file.csv file.$(date +%D).csv


But it fails because the filenames is: file.03/27/19.csv with the slash of separate directories.



And I have been trying again to:



cp file.csv file.$(printf "%q" $(date +%D)).csv


But it still fails.







shell filenames date escape-characters slash






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 4 hours ago









Gilles

544k12811041621




544k12811041621










asked 9 hours ago









tres.14159tres.14159

2814




2814













  • You can not set a filename with slash characters: stackoverflow.com/questions/9847288/…

    – tres.14159
    9 hours ago











  • the problem is your use of the date format using the / character. You said it yourself, the shell is seeing them as directory markers. Try one of the many other options available from date. You might be able to get the / escaped so the filename uses the character code (like putting a space in a filename), but that is often problematic.

    – 0xSheepdog
    9 hours ago





















  • You can not set a filename with slash characters: stackoverflow.com/questions/9847288/…

    – tres.14159
    9 hours ago











  • the problem is your use of the date format using the / character. You said it yourself, the shell is seeing them as directory markers. Try one of the many other options available from date. You might be able to get the / escaped so the filename uses the character code (like putting a space in a filename), but that is often problematic.

    – 0xSheepdog
    9 hours ago



















You can not set a filename with slash characters: stackoverflow.com/questions/9847288/…

– tres.14159
9 hours ago





You can not set a filename with slash characters: stackoverflow.com/questions/9847288/…

– tres.14159
9 hours ago













the problem is your use of the date format using the / character. You said it yourself, the shell is seeing them as directory markers. Try one of the many other options available from date. You might be able to get the / escaped so the filename uses the character code (like putting a space in a filename), but that is often problematic.

– 0xSheepdog
9 hours ago







the problem is your use of the date format using the / character. You said it yourself, the shell is seeing them as directory markers. Try one of the many other options available from date. You might be able to get the / escaped so the filename uses the character code (like putting a space in a filename), but that is often problematic.

– 0xSheepdog
9 hours ago












1 Answer
1






active

oldest

votes


















12














You can't have / (byte 0x2F on ASCII-based systems) in a file name, period.



You can use characters that look like / like (fraction slash), so you could do:



 cp file.csv "file.$(date +%D | sed 's|/|⁄|g').csv"


But you may run into problems like the file name being rendered differently in locales using a different charset.



My advice would be to use the standard non-ambiguous (for most people outside the US, 03/12/18 would be interpreted as the 3rd of December 2018 for instance) YYYY-mm-dd format instead (which also helps wrt sorting):



 cp file.csv "file.$(date +%Y-%m-%d).csv"


Which with many date implementations you can shorten to:



 cp file.csv "file.$(date +%F).csv"





share|improve this answer

























    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "106"
    };
    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: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    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%2funix.stackexchange.com%2fquestions%2f509043%2fescape-a-backup-date-in-a-file-name%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    12














    You can't have / (byte 0x2F on ASCII-based systems) in a file name, period.



    You can use characters that look like / like (fraction slash), so you could do:



     cp file.csv "file.$(date +%D | sed 's|/|⁄|g').csv"


    But you may run into problems like the file name being rendered differently in locales using a different charset.



    My advice would be to use the standard non-ambiguous (for most people outside the US, 03/12/18 would be interpreted as the 3rd of December 2018 for instance) YYYY-mm-dd format instead (which also helps wrt sorting):



     cp file.csv "file.$(date +%Y-%m-%d).csv"


    Which with many date implementations you can shorten to:



     cp file.csv "file.$(date +%F).csv"





    share|improve this answer






























      12














      You can't have / (byte 0x2F on ASCII-based systems) in a file name, period.



      You can use characters that look like / like (fraction slash), so you could do:



       cp file.csv "file.$(date +%D | sed 's|/|⁄|g').csv"


      But you may run into problems like the file name being rendered differently in locales using a different charset.



      My advice would be to use the standard non-ambiguous (for most people outside the US, 03/12/18 would be interpreted as the 3rd of December 2018 for instance) YYYY-mm-dd format instead (which also helps wrt sorting):



       cp file.csv "file.$(date +%Y-%m-%d).csv"


      Which with many date implementations you can shorten to:



       cp file.csv "file.$(date +%F).csv"





      share|improve this answer




























        12












        12








        12







        You can't have / (byte 0x2F on ASCII-based systems) in a file name, period.



        You can use characters that look like / like (fraction slash), so you could do:



         cp file.csv "file.$(date +%D | sed 's|/|⁄|g').csv"


        But you may run into problems like the file name being rendered differently in locales using a different charset.



        My advice would be to use the standard non-ambiguous (for most people outside the US, 03/12/18 would be interpreted as the 3rd of December 2018 for instance) YYYY-mm-dd format instead (which also helps wrt sorting):



         cp file.csv "file.$(date +%Y-%m-%d).csv"


        Which with many date implementations you can shorten to:



         cp file.csv "file.$(date +%F).csv"





        share|improve this answer















        You can't have / (byte 0x2F on ASCII-based systems) in a file name, period.



        You can use characters that look like / like (fraction slash), so you could do:



         cp file.csv "file.$(date +%D | sed 's|/|⁄|g').csv"


        But you may run into problems like the file name being rendered differently in locales using a different charset.



        My advice would be to use the standard non-ambiguous (for most people outside the US, 03/12/18 would be interpreted as the 3rd of December 2018 for instance) YYYY-mm-dd format instead (which also helps wrt sorting):



         cp file.csv "file.$(date +%Y-%m-%d).csv"


        Which with many date implementations you can shorten to:



         cp file.csv "file.$(date +%F).csv"






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited 9 hours ago

























        answered 9 hours ago









        Stéphane ChazelasStéphane Chazelas

        311k57589946




        311k57589946






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Unix & Linux Stack Exchange!


            • 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%2funix.stackexchange.com%2fquestions%2f509043%2fescape-a-backup-date-in-a-file-name%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

            How to reconfigure Docker Trusted Registry 2.x.x to use CEPH FS mount instead of NFS and other traditional...

            is 'sed' thread safe

            How to make a Squid Proxy server?