I have created a alias function
move-jar(){
mv ~/Downloads/$1 ~/Documents/$1
}
but when i do
move-jar sample.jar
it doesn't work and displays an error
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
what is the issue in the command ? please help me out .
Use full path for the file-names instead of tilde ~
move-jar(){ mv "/home/user/Downloads/$1" "/home/user/Documents/$1"; }
And this one-liner works for me.
move-jar(){ mv ~/Downloads/$1 ~/Documents/$1; }
Related
I have just started to work on a Imac macOS HighSierra and when trying to copy some files I keep getting the error:
I just made a test directory to clarify the issue:
The directory test contains:
file1.txt file2.txt folder1
Using the following command in the parent directory:
cp -R test/ .
I get this error:
cp: illegal option -- ?
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
According to manual page for cp, the -R argument means:
If source_file designates a directory, cp copies the directory and the entire subtree connected at that point. If the source_file ends in a /, the contents of the
directory are copied rather than the directory itself.
Any suggestions as to why I get the error ?
I have bash version version 3.2.57(1)-release
----UPDATE---
According to comments to this issue, I provide some additional information:
which cp returns /bin/cp
echo cp -R test/ .returns cp -R test/ .
set | grep cp returns nothing
cp --version and cp --help returns cp: illegal option -- ? usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
man cp returns the manual page but it doesn't seem to depict anything about the version except BSD February 23, 2005 BSD
For Mac OS, change the cp commands as below examples
Ex 1.
"copy:schemas": "cp --parents schematics/*/schema.json ../../dist/my-lib/",
as
"copy:schemas": "find schematics -type f -name 'schema.json' -exec rsync -R {} ../../dist/my-lib/ \\;",
Ex 2.
copy:files": "cp --parents -p schematics/*/files/** ../../dist/my-lib/",
as
"copy:files": "find schematics/*/files/** -exec rsync -R {} ../../dist/my-lib/ \\;",
Hope this helps 😊.
Does this solve your issue:
cp -R test/* .
or:
cp -R test/* ./
By adding the asterisk, you mention that you are copying files, not a directory.
I am trying to move files from folder A to folder B whenever a file contains a certain string:
grep -Rli '22/05/2018' ads/ | awk -F "//" '{print $2}' | xargs cp $0 projection/$1
cp: illegal option -- b
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
how to fix this?
Following may help you here.
grep -L -Z -r 'your_string_to_be_checked' . | xargs -0 -I{} mv {} target_directory/
Explanation:
grep -L: Means leave those files which are NOT having that specific string which we are searching for.
-Z: means output should have \0 in file names so space is not being used as delimiter.
-I{} mv {} new_directory/ means replace {} with file names and make it like mv filename new_directory and run it to move the files to new place.
I am using mv here you could use cp too here.
Not sure why you're using awk.
Solution:
grep -lir '22/05/2018' ~/ads/* | xargs cp -t $DEST_FOLDER
Source
Once you have the list of filenames you want to copy you could just use xargs -I:
$ cat listOfFileNames | xargs -I{} cp {} $destFolder
the -I option gives a name to the list of arguments, allowing you to place them wherever you want.
I am trying to copy the contents of a folder called exampleSite into my current folder.
My command is like this:
cp themes/goa/exampleSite/* . -r
however i'm getting the following error
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
Any suggestions?
The correct way to use copy command in unix is -
cp -r themes/goa/exampleSite/* .
where, cp is the <command>
themes/goa/exampleSite/* is <1st arugment> i.e. SOURCE
. is <2nd argument> i.e. DESTINATION
Whenever a command you run, fails unexpectedly immediately due to some syntax error. Please run
man <command>
This will show you the right syntax!
Hope it helps..
How could I use cp -r command to copy more directories? For example, I'd to copy awesome.txt, neat.txt in the folder something with the command cp -r awesome.txt neat.txt something, but I have an error.
Error :
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
Thanks!
There are several ways you could achieve this. The easiest I have seen is to use the following.
cp /home/usr/dir/{file1,file2,file3,file4} /home/usr/destination/
The syntax uses the cp command followed by the path to the directory the desired files are located in with all the files you wish to copy wrapped in brackets and separated by commas.
Make sure to note that there are no spaces between the files. The last part of the command, /home/usr/destination/, is the directory you wish to copy the files into.
or if the all the files have the same prefix but different endings you could do something like this:
cp /home/usr/dir/file{1..4} ./
Where file1,file2,file3 and file4 would be copied.
I am trying to move all my video files that are in my pictures directory to my movies Directory. This is on a Mac by the way.
I thought I could simple Recurse through all my picture directories with an "ls -R"
Then I pipe that to grep -i ".avi" This give me all the movie files.
Now I pipe these values to "mv -n $1 ~/Movies" this I am hoping would move the files to the Movies folder.
I have a few Problems.
1. The "ls -R" does not list the path when listing the files. So I think I may fail to move the file.
2. I can not seem to get the file name to assign to the $1 in the mv command.
All together my command looks like this: Note I am running this from ~/Pictures
ls -R | grep -i ".avi" | mv -n $1 ~/Movies
So right now I am not sure which part is failing but I do get this error:
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
If I remove the 'mv' command I get a listing of avi files with out the path. Example Below:
4883.AVI
4884.AVI
4885.AVI
4886.AVI
4887.AVI
...
Any one have any ideas on how I can get the path in the 'ls' or how to pass a value in between the '|' commands.
Thanks.
It's better if you use the find command:
$ find -name "*.avi" -exec mv {} ~/Movies \;
you should create simple copy.sh like this
#!/bin/bash
cp $1 ~/Movies/
An run command ./copy.sh "$(ls | grep avi)"
The bash for loop can help you find all the avi files easily
shopt -s nullglob
for file in *.avi
do
mv "$file" "$file" ~/Movies/"$file"
done
you can achieve this in many ways, one of it in my openion:
ls -R | grep -i ".avi" | while read movie
do
echo " moving $movie"
mv $movie ~/Movies/
done
Use backticks
mv `ls *.avi` ~/Movies