Script Question regarding finding and renaming a CSV file The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) 2019 Community Moderator Election Results Why I closed the “Why is Kali so hard” questionBash shell scripting basic question regarding the syntax and basenameRename bash script - false no such file or directory errorHelp with Script to Process txt file to CSVExecute Linux command only if column in CSV file has a value greater than 1CSV copy script error reporting in bashBuild a Renaming ScriptDownload url from CSV file and rename the fileShell script to find and replace value from csv fileBash Script to take a file as input and run awk command on another fileshell script read from csv column and search files
How many people can fit inside Mordenkainen's Magnificent Mansion?
Are my PIs rude or am I just being too sensitive?
Did God make two great lights or did He make the great light two?
Did the new image of black hole confirm the general theory of relativity?
Can smartphones with the same camera sensor have different image quality?
Do warforged have souls?
University's motivation for having tenure-track positions
He got a vote 80% that of Emmanuel Macron’s
How do I add random spotting to the same face in cycles?
Why not take a picture of a closer black hole?
Derivation tree not rendering
Is it ethical to upload a automatically generated paper to a non peer-reviewed site as part of a larger research?
What do you call a plan that's an alternative plan in case your initial plan fails?
Segmentation fault output is suppressed when piping stdin into a function. Why?
How to politely respond to generic emails requesting a PhD/job in my lab? Without wasting too much time
Can withdrawing asylum be illegal?
Windows 10: How to Lock (not sleep) laptop on lid close?
How can I protect witches in combat who wear limited clothing?
Scientific Reports - Significant Figures
Why can't devices on different VLANs, but on the same subnet, communicate?
Can the prologue be the backstory of your main character?
Is this wall load bearing? Blueprints and photos attached
Match Roman Numerals
Hopping to infinity along a string of digits
Script Question regarding finding and renaming a CSV file
The 2019 Stack Overflow Developer Survey Results Are In
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
2019 Community Moderator Election Results
Why I closed the “Why is Kali so hard” questionBash shell scripting basic question regarding the syntax and basenameRename bash script - false no such file or directory errorHelp with Script to Process txt file to CSVExecute Linux command only if column in CSV file has a value greater than 1CSV copy script error reporting in bashBuild a Renaming ScriptDownload url from CSV file and rename the fileShell script to find and replace value from csv fileBash Script to take a file as input and run awk command on another fileshell script read from csv column and search files
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I am trying to write a script that starts off with testing for the existence of a CSV file. If it finds one, rename it to listing.txt.
This is what I have but it doesn't work.
if [ -f "*.csv" ];
then
cp *.csv listing.txt
fi
shell-script
New contributor
Software Info is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
I am trying to write a script that starts off with testing for the existence of a CSV file. If it finds one, rename it to listing.txt.
This is what I have but it doesn't work.
if [ -f "*.csv" ];
then
cp *.csv listing.txt
fi
shell-script
New contributor
Software Info is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
What if there are multiple CSV files in the directory you're searching? You can't give them all the same name.
– igal
Apr 10 at 0:09
There will only be one at any given time. At the end, the script will delete the file.
– Software Info
Apr 10 at 0:16
add a comment |
I am trying to write a script that starts off with testing for the existence of a CSV file. If it finds one, rename it to listing.txt.
This is what I have but it doesn't work.
if [ -f "*.csv" ];
then
cp *.csv listing.txt
fi
shell-script
New contributor
Software Info is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
I am trying to write a script that starts off with testing for the existence of a CSV file. If it finds one, rename it to listing.txt.
This is what I have but it doesn't work.
if [ -f "*.csv" ];
then
cp *.csv listing.txt
fi
shell-script
shell-script
New contributor
Software Info is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Software Info is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
edited Apr 10 at 0:15
Jeff Schaller♦
45k1164147
45k1164147
New contributor
Software Info is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
asked Apr 10 at 0:00
Software InfoSoftware Info
1
1
New contributor
Software Info is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Software Info is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Software Info is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
What if there are multiple CSV files in the directory you're searching? You can't give them all the same name.
– igal
Apr 10 at 0:09
There will only be one at any given time. At the end, the script will delete the file.
– Software Info
Apr 10 at 0:16
add a comment |
What if there are multiple CSV files in the directory you're searching? You can't give them all the same name.
– igal
Apr 10 at 0:09
There will only be one at any given time. At the end, the script will delete the file.
– Software Info
Apr 10 at 0:16
What if there are multiple CSV files in the directory you're searching? You can't give them all the same name.
– igal
Apr 10 at 0:09
What if there are multiple CSV files in the directory you're searching? You can't give them all the same name.
– igal
Apr 10 at 0:09
There will only be one at any given time. At the end, the script will delete the file.
– Software Info
Apr 10 at 0:16
There will only be one at any given time. At the end, the script will delete the file.
– Software Info
Apr 10 at 0:16
add a comment |
1 Answer
1
active
oldest
votes
Your existing code tests for the existence of a file called *.csv (literally). This is why it does not work. It does that because the * is within double quotes.
Using [ -f *.csv ] will not work as expected if there are multiple files matching the pattern. If there are multiple files matching *.csv, the cp command will additionally not work properly, unless listing.txt is the name of a directory.
To rename the first of the files matching the filename globbing pattern *.cvs in the current directory, do this:
#!/bin/sh
set -- *.csv
while [ "$#" -gt 0 ] && [ ! -f "$1" ]; do
shift
done
if [ -f "$1" ]; then
mv -- "$1" listing.txt
fi
This first sets the positional parameters, $1, $2, etc., the all names matching *.csv in the current directory. Then it starts looking for the first regular file, or symbolic link to a regular file, among the matched names (the code assumes that the *.csv glob may expand to directory names etc.). If a regular file, or a symbolic link to one, is found, it renames that file to listing.txt.
In the zsh shell:
mv -- *.csv(-.[1]) listing.txt
This uses a glob modifier for the *.csv globbing pattern that returns the first regular file or symbolic link that matches the pattern.
Great. I will try that. Thanks so much.
– Software Info
11 hours ago
add a comment |
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
);
);
Software Info is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f511563%2fscript-question-regarding-finding-and-renaming-a-csv-file%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
Your existing code tests for the existence of a file called *.csv (literally). This is why it does not work. It does that because the * is within double quotes.
Using [ -f *.csv ] will not work as expected if there are multiple files matching the pattern. If there are multiple files matching *.csv, the cp command will additionally not work properly, unless listing.txt is the name of a directory.
To rename the first of the files matching the filename globbing pattern *.cvs in the current directory, do this:
#!/bin/sh
set -- *.csv
while [ "$#" -gt 0 ] && [ ! -f "$1" ]; do
shift
done
if [ -f "$1" ]; then
mv -- "$1" listing.txt
fi
This first sets the positional parameters, $1, $2, etc., the all names matching *.csv in the current directory. Then it starts looking for the first regular file, or symbolic link to a regular file, among the matched names (the code assumes that the *.csv glob may expand to directory names etc.). If a regular file, or a symbolic link to one, is found, it renames that file to listing.txt.
In the zsh shell:
mv -- *.csv(-.[1]) listing.txt
This uses a glob modifier for the *.csv globbing pattern that returns the first regular file or symbolic link that matches the pattern.
Great. I will try that. Thanks so much.
– Software Info
11 hours ago
add a comment |
Your existing code tests for the existence of a file called *.csv (literally). This is why it does not work. It does that because the * is within double quotes.
Using [ -f *.csv ] will not work as expected if there are multiple files matching the pattern. If there are multiple files matching *.csv, the cp command will additionally not work properly, unless listing.txt is the name of a directory.
To rename the first of the files matching the filename globbing pattern *.cvs in the current directory, do this:
#!/bin/sh
set -- *.csv
while [ "$#" -gt 0 ] && [ ! -f "$1" ]; do
shift
done
if [ -f "$1" ]; then
mv -- "$1" listing.txt
fi
This first sets the positional parameters, $1, $2, etc., the all names matching *.csv in the current directory. Then it starts looking for the first regular file, or symbolic link to a regular file, among the matched names (the code assumes that the *.csv glob may expand to directory names etc.). If a regular file, or a symbolic link to one, is found, it renames that file to listing.txt.
In the zsh shell:
mv -- *.csv(-.[1]) listing.txt
This uses a glob modifier for the *.csv globbing pattern that returns the first regular file or symbolic link that matches the pattern.
Great. I will try that. Thanks so much.
– Software Info
11 hours ago
add a comment |
Your existing code tests for the existence of a file called *.csv (literally). This is why it does not work. It does that because the * is within double quotes.
Using [ -f *.csv ] will not work as expected if there are multiple files matching the pattern. If there are multiple files matching *.csv, the cp command will additionally not work properly, unless listing.txt is the name of a directory.
To rename the first of the files matching the filename globbing pattern *.cvs in the current directory, do this:
#!/bin/sh
set -- *.csv
while [ "$#" -gt 0 ] && [ ! -f "$1" ]; do
shift
done
if [ -f "$1" ]; then
mv -- "$1" listing.txt
fi
This first sets the positional parameters, $1, $2, etc., the all names matching *.csv in the current directory. Then it starts looking for the first regular file, or symbolic link to a regular file, among the matched names (the code assumes that the *.csv glob may expand to directory names etc.). If a regular file, or a symbolic link to one, is found, it renames that file to listing.txt.
In the zsh shell:
mv -- *.csv(-.[1]) listing.txt
This uses a glob modifier for the *.csv globbing pattern that returns the first regular file or symbolic link that matches the pattern.
Your existing code tests for the existence of a file called *.csv (literally). This is why it does not work. It does that because the * is within double quotes.
Using [ -f *.csv ] will not work as expected if there are multiple files matching the pattern. If there are multiple files matching *.csv, the cp command will additionally not work properly, unless listing.txt is the name of a directory.
To rename the first of the files matching the filename globbing pattern *.cvs in the current directory, do this:
#!/bin/sh
set -- *.csv
while [ "$#" -gt 0 ] && [ ! -f "$1" ]; do
shift
done
if [ -f "$1" ]; then
mv -- "$1" listing.txt
fi
This first sets the positional parameters, $1, $2, etc., the all names matching *.csv in the current directory. Then it starts looking for the first regular file, or symbolic link to a regular file, among the matched names (the code assumes that the *.csv glob may expand to directory names etc.). If a regular file, or a symbolic link to one, is found, it renames that file to listing.txt.
In the zsh shell:
mv -- *.csv(-.[1]) listing.txt
This uses a glob modifier for the *.csv globbing pattern that returns the first regular file or symbolic link that matches the pattern.
answered Apr 10 at 7:32
Kusalananda♦Kusalananda
141k18263439
141k18263439
Great. I will try that. Thanks so much.
– Software Info
11 hours ago
add a comment |
Great. I will try that. Thanks so much.
– Software Info
11 hours ago
Great. I will try that. Thanks so much.
– Software Info
11 hours ago
Great. I will try that. Thanks so much.
– Software Info
11 hours ago
add a comment |
Software Info is a new contributor. Be nice, and check out our Code of Conduct.
Software Info is a new contributor. Be nice, and check out our Code of Conduct.
Software Info is a new contributor. Be nice, and check out our Code of Conduct.
Software Info is a new contributor. Be nice, and check out our Code of Conduct.
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f511563%2fscript-question-regarding-finding-and-renaming-a-csv-file%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
What if there are multiple CSV files in the directory you're searching? You can't give them all the same name.
– igal
Apr 10 at 0:09
There will only be one at any given time. At the end, the script will delete the file.
– Software Info
Apr 10 at 0:16