Linux copy file and rename

Linux copy file and rename

By now, you’ve learned a little about the structure of the filesystem; and you’ve learned how to create files and directories.

But just because you know how to create files and directories doesn’t mean that you’re stuck with the changes you’ve made. What if you want to rename and/or move files and directories?

Let’s start with the copy command.

Like so many Linux features, you have a variety of options from which to choose when you want to manipulate files and directories. You can also use wildcards when you’re copying, moving, or deleting files and directories.

Basically, the copy command is not much more complex than typing:

so to copy the file sneakers.txt to the directory tigger in your login directory, just type:

cp sneakers.txt tigger

Notice that you also used relative pathnames to copy the file. You can use both relative and absolute pathnames with cp . Our login directory is the parent of the directory tigger ; meaning that tigger is one directory down from ours.

Read the cp man page ( man cp ) for a full list of the options available with cp . But among the options you can use with cp are:

-i — interactive. Prompts you to confirm if the file is going to overwrite a file in your destination. This is a handy option because it can help prevent you from making mistakes.

-r — recursive. Rather than just copying all the files and directories, copies the whole directory tree, subdirectories and all, to another location.

-f — force. Copies without prompting you for confirmation that the file should be overwritten. Unless you’re sure you want to force the copy, you probably don’t want to make friends with this option right now.

-v — verbose. Will show the progress of the files being copied.

Just by using cp alone, you won’t see much when the command is executed. Using an option, such as -i , can make the process a little more useful, because if you want to copy a file to a location that already has a file with the same name, you’ll be asked first if you really want to overwrite — meaning replace — the file that’s already there.

Remember that among your options is -f (force), which can overwrite files without asking you if you’re certain. Make sure, when you use the force option, that you really want to overwrite a file.

Now that we have the file sneakers.txt in the tigger directory, let’s use cp -i to copy the file again to the same location.

[newuser@localhost newuser]$ cp -i sneakers.txt tigger cp: overwrite ‘tigger/sneakers.txt’?

To overwrite the file that’s already there, press Y and then Enter . Don’t want to overwrite the file? Now is the time to press N and Enter .

To move files, use the mv command ( man mv ), which is similar to the cp command, except that with mv the file is physically moved from one place to another, instead of being duplicated, as with cp .

Common options available with mv include:

-i — interactive. Will prompt you if the file you’ve selected will overwrite an existing file in the destination directory. This is a good option, because like the -i option in cp , you’ll be given the chance to make sure you want to replace an existing file.

-f — force. Overrides the interactive mode and moves without prompting. Unless you know what you’re doing, this option doesn’t play nice; be very careful about using it until you become more comfortable with your system.

-v — verbose. Shows a list of the files being moved.

If you want to move a file out of your home directory and into another directory, you would type:

mv sneakers.txt tigger

or, mv sneakers.txt /home/newuser /home/newuser/tigger using absolute pathnames.

Actually, we’ve already covered half of renaming, because when you copy or move files, you can also rename.

To copy the file sneakers.txt from our login directory to our tigger subdirectory, just type:

cp sneakers.txt tigger

To copy and rename that file from sneakers.txt to piglet.txt , type:

cp sneakers.txt tigger/piglet.txt

To move and rename the file, just substitute mv for cp in the above example.

If you cd to tigger and use ls , you’ll see the file piglet.txt .

If you just want to rename the file and keep its location, just mv in your current directory:

mv sneakers.txt piglet.txt

We talked about creating files with the touch command and by using redirection in Chapter 13 . And we created the directory tigger using mkdir .

But we haven’t discussed how to delete files and directories.

Deleting files and directories with the rm command ( man rm ) is a straightforward process.

Let’s take our new file piglet.txt , and delete it from the tigger directory with the rm command:

What happens if we didn’t really want to get rid of it? Too late! Again, that’s where the -i (interactive) option comes in handy, because it gives a second chance to think about whether we really want to toss the file.

[newuser@localhost newuser]$ rm -i piglet.txt rm: remove ‘piglet.txt’?

You can also delete files using the wildcard * , but be careful, because you can easily delete files you didn’t intend to throw away.

To remove a file using a wildcard, you would type:

You can also remove more than one file in one command, as in:

rm piglet.txt sneakers.txt

Options for removing files — and directories — include:

-i — interactive. Prompts you to confirm the deletion. This is good.

-f — force. Overrides interactive mode and removes the file(s) without prompting. This might not be good, unless you know exactly what you’re doing.

-v — verbose. Shows a listing of files as they’re being removed.

-r — recursive. When removing directories, will remove all of the files and the subdirectories of the specified directory. This can also get rid of an empty directory.

To remove directories with rm , you must specify the -r option.

For example, if you want to recursively remove the directory tigger you would type:

And if you want to combine options, such as forcing a recursive deletion, you can type:

Don’t be too «forceful»

The rm is a powerful command, and can delete your entire system! If you’re root and you type the simple command rm -rf / you’re sunk — like a snake eating its tail, the command will recursively remove everything on your system.

A safer alternative to using rm for removing directories is the rmdir command. With this command, you won’t be allowed to use recursive deletions, so a directory which has files in it won’t be deleted.

Read the rmdir man page by typing man rmdir to find out more about the command.

Источник

How to Copy Files and Directories in Linux

Home » SysAdmin » How to Copy Files and Directories in Linux

This guide will show you how to copy files and directories in Linux by executing commands from the command line. Furthermore, the commands listed below detail how to create system-wide backups or filter out and copy only specific files.

Note: These Linux commands can only be run from a terminal window. If your version of Linux boots to a desktop graphical interface, launch a terminal window by pressing CTRL-ALT-F2 or CTRL-ALT-T.

Using the cp Command to Copy Files and Directories in Linux

The cp command is the primary method for copying files and directories in Linux. Virtually all Linux distributions can use cp . The basic format of the command is:

This Linux command creates a copy of the my_file.txt file and renames the new file to my_file2.txt.

By default, the cp command runs in the same directory you are working in. However, the same file cannot exist twice in the same directory. You’ll need to change the name of the target file to copy in the same location. Some users will add _old, some will add a number, and some will even change the three-letter extension (e.g., .bak instead of .txt).

You may not get a warning before Linux overwrites your file – be careful, or see below for the –i option.

Additional Options

Additional options can be used in combination with the cp command:

  • –v verbose: shows the progress of multiple copied files
  • –ppreserve: keeps the same attributes, like creation date and file permissions
  • –f force: force the copy by deleting an existing file first
  • –i interactive: prompts for confirmation, highly advised
  • –Rrecursive: copies all files and subfolders in a directory
  • –u update: copy only if source is newer than destination

Note: The -p (preserve) option forces the system to preserve the following source file attributes: modification time, access time, user ID (UID), group ID (GID), file flags, file mode, access control lists (ACLs), and extended attributes (EAs).

How to Copy File to Another Directory in Linux

To copy a file from the directory you’re working in to a different location, use the command:

You don’t need to rename the file unless there’s already one with the same name in the target directory.

To specify a path for the source file:

This lets you copy without having to change directories. The cp command will create the /new_directory if it doesn’t exist.

To rename and copy a file to a different path:

This option is useful for creating backups of configuration files, or for copying data to a storage device.

Note: Learn how to move directories in Linux.

Copy Multiple Files from One Directory to Another in Linux

You may need to copy more than one file at a time.

List each file to be copied before the target directory:

This example created a copy of all three files in the /new_directory folder.

Use a wildcard to specify all files that share a string of characters:

This would find all the files with the .jpg extension in the /pictures directory, and copy them into the /new_directory folder.

To copy an entire folder and its subfolders and files, use the –R option:

–R stands for recursive, which means “everything in that location.” This would copy all the files, as well as all the directories, to the /new_directory folder.

Copy Using rsync Command

The rsync command in Linux is used to synchronize or transfer data between two locations. Usage is similar to cp , but there are a few key differences to note.

To copy a single file, enter the following into a terminal:

  • The –a option means all, and is included with rsync commands – this preserves subdirectories, symbolic links, and other metadata.
  • Replace the my_file.txt file in the working directory.
  • Replace /new_directory/ with the destination.
  • Using my_file_backup.txt as the target indicates the file will be renamed during the copy.

To copy a directory with rsync, enter the following:

This copies the contents of the /etc/docker/ directory to /home/backup/docker/. Make sure to keep the slashes. Omitting the slash on the source directory will copy the contents into a subdirectory.

To omit files from being copied, check out our guide on how to exclude files and directories in data transfer using rsync command.

Other Options

The ls command is a handy partner to the cp command in Linux.

To list the contents of a directory enter the command:

The example above displays all the files in /directory. Use this command after copying to verify the files were copied successfully.

To change directories, use cd and the name of the directory. For example:

The command prompt will change to display that you’ve changed directories.

Now you understand how to copy files in Linux. The cp command is a versatile and powerful tool for managing and backing up files.

Источник

Copying and renaming files on Linux

There’s more to copying and renaming files on Linux than cp and mv. Try some commands and strategies that might surprise you and save you some time.

Linux users have for many decades been using simple cp and mv commands to copy and rename files. These commands are some of the first that most of us learned and are used every day by possibly millions of people. But there are other techniques, handy variations, and another command for renaming files that offers some unique options.

First, let’s think about why might you want to copy a file. You might need the same file in another location or you might want a copy because you’re going to edit the file and want to be sure you have a handy backup just in case you need to revert to the original file. The obvious way to do that is to use a command like “cp myfile myfile-orig”.

If you want to copy a large number of files, however, that strategy might get old real fast. Better alternatives are to:

  • Use tar to create an archive of all of the files you want to back up before you start editing them.
  • Use a for loop to make the backup copies easier.

The tar option is very straightforward. For all files in the current directory, you’d use a command like:

For a group of files that you can identify with a pattern, you’d use a command like this:

In each case, you end up with a myfiles.tar file that contains all the files in the directory or all files with the .txt extension.

An easy loop would allow you to make backup copies with modified names:

When you’re backing up a single file and that file just happens to have a long name, you can rely on using the tab command to use filename completion (hit the tab key after entering enough letters to uniquely identify the file) and use syntax like this to append “-orig” to the copy.

You then have a file-with-a-very-long-name and a file-with-a-very-long-name file-with-a-very-long-name-orig.

Renaming files on Linux

The traditional way to rename a file is to use the mv command. This command will move a file to a different directory, change its name and leave it in place, or do both.

But we now also have the rename command to do some serious renaming for us. The trick to using the rename command is to get used to its syntax, but if you know some perl, you might not find it tricky at all.

Here’s a very useful example. Say you wanted to rename the files in a directory to replace all of the uppercase letters with lowercase ones. In general, you don’t find a lot of file with capital letters on Unix or Linux systems, but you could. Here’s an easy way to rename them without having to use the mv command for each one of them. The /A-Z/a-z/ specification tells the rename command to change any letters in the range A-Z to the corresponding letters in a-z.

You can also use rename to remove file extensions. Maybe you’re tired of seeing text files with .txt extensions. Simply remove them — and in one command.

Now let’s imagine you have a change of heart and want to put those extensions back. No problem. Just change the command. The trick is understanding that the “s” before the first slash means “substitute”. What’s in between the first two slashes is what we want to change, and what’s in between the second and third slashes is what we want to change it to. So, $ represents the end of the filename, and we’re changing it to “.txt”.

You can change other parts of filenames, as well. Keep the s/old/new/ rule in mind.

Note in the examples above that when we use an s as in «s/old/new/», we are substituting one part of the name with another. When we use y, we are transliterating (substituting characters from one range to another).

Wrap-up

There are a lot of options for copying and renaming files. I hope some of them will make your time on the command line more enjoyable.

Sandra Henry-Stocker has been administering Unix systems for more than 30 years. She describes herself as «USL» (Unix as a second language) but remembers enough English to write books and buy groceries. She lives in the mountains in Virginia where, when not working with or writing about Unix, she’s chasing the bears away from her bird feeders.

Источник

Читайте также:  Apple клавиатура кнопка windows
Оцените статью
Be careful!