1 minute read

SituationPermalink

If you want to copy the list of files or folders using outputs of the ls command, you may find this post is useful. One simple bash command line can save your time.

ExamplePermalink

You might need to copy all the mp4 files in a directory to another directory. Here is an example folder structure.

/a/video1.mp4
/a/video2.mp4
/a/video3.mp4

How can we copy those mp4 files to directory b?

cp `ls /a | grep "*.mp4" | perl -ne 'print "/a/$_"'` /b

That’s it. All done! Here is the general form of the command.

cp -R `ls /path/to/source | grep -E "target" | perl -ne 'print "/path/to/source/$_"'` ./

BacktickPermalink

Inside of the command between backtick will be evaluated by the shell before the main command. Article

grep with E optionPermalink

The E option escape certain special characters for example, ‘{‘ or ‘(‘. Article

perl with -ne optionPermalink

The “perl” command uses the Perl programming language.

-n: causes perl to assume the following loop around your script,

-e: maybe used to enter one line of script.

Here is the article about Perl options.

Hene, the command line prints the output of the filename concatenated with the absolute path. I use the perl command to concatenate the original absolute path. Article

Leave a comment