Question: I've got a text file with a listing of file locations I want to move, first to temporary directory, do some in the source directory then move the files back to the original location.

The listing file is of the format generated by, say, a find command, such as:

```
~/$ find . -name "*.[ch]" > ~/tmp/my_file_list.txt

```

Currently I'm using `sed` to manipulate the file on the screen, and cutting and pasting its output to issue the commands. I find this offensive, but it works:

```
~/$ sed -r 's_.+_cp & ~/tmp/_' ~/tmp/my_file_list.txt

```

(copy and paste outputs, then to put the files back)

```
~/$ sed -r 's_.+/(.+)_cp ~/tmp/\1 &_' ~/tmp/my_file_list.txt

```

(copy ... paste ... wince)

How could I do the above two lines simply without the copy and paste ... I'm thinking xargs might hold the solution I yearn.

**[Edit]**
*To deal with spaces:*

```
~/$ sed -r 's_.+_cp "&" ~/tmp/_' ~/tmp/my_file_list.txt

```

*and*

```
~/$ sed -r 's_.+/(.+)_cp "~/tmp/\1" "&"_' ~/tmp/my_file_list.txt

```

Answer: 
Simply pipe the output into `bash`:

```
~/$ sed -r 's_.+_cp & ~/tmp/_' ~/tmp/my_file_list.txt | bash

```
Although I see you've already gotten an answer that solves the copy-paste problem, I would actually suggest using `rsync` for this. The sequence would go as follows:

```
~/$ find . -name "*.[ch]" > ~/tmp/my_file_list.txt

```

To backup:

```
~/$ rsync --files-from=tmp/my_file_list.txt . tmp/

```

Do whatever with the original files, then to restore:

```
~/$ rsync --files-from=tmp/my_file_list.txt tmp/ .

```

This has the (negligible) advantage of not copying files that you haven't modified, thus saving a bit of disk activity. It has the less negligible advantage that if you have multiple files with the same name in different directories, they won't clash because `rsync` preserves the relative paths.