In Linux, how to copy all the files not starting with a given string?

mstaniloiu picture mstaniloiu · Jan 12, 2011 · Viewed 16.6k times · Source

I tried with the following command:

cp src_folder/[!String]* dest_folder

However, this command will copy all the files that don't start with any of the characters 'S','t','r','i','n','g' instead of copying files that don't start with "String".

Answer

Didier Trosset picture Didier Trosset · Jan 12, 2011

A variation on Konrad answer, using cp option -t to specify target directory simplifies the last command. It creates a single cp process to copy all the files.

ls src_folder | grep -v '^String' | xargs cp -t dest_folder
  • list all files in src_folder
  • filter out all those that start with String
  • copy all remaining files to dest_dir