Bash
如何僅將指定目錄中的文件複製到另一個文件夾
我正在嘗試使用
cp /media/d/folder1/* /home/userA/folder2/
. 它正在復製文件,但問題是出現了一個消息列表,說明cp: omitting directory....
位於folder1
. 有沒有其他方法可以複製這些文件夾而不會出現此消息?還有一件事,如果我想移動(而不是複制),我問同樣的事情,怎麼做?謝謝
find /media/d/folder1/ -maxdepth 1 -type f | xargs cp -t /home/userA/folder2
管道字元之前的部分在
|
給定目錄中查找文件,而不嘗試在給定目錄的任何子目錄下查找其他文件。管道之後的部分獲取這些文件並將它們複製到目標目錄。如果要移動文件而不是複制,可以更改cp
命令。mv
一種更安全的方法(可以處理帶有空格、換行符和其他奇數字元的文件名)是使用
find
自身及其-exec
操作:-exec command {} + This variant of the -exec action runs the specified command on the selected files, but the command line is built by appending each selected file name at the end; the total number of invoca‐ tions of the command will be much less than the number of matched files. The command line is built in much the same way that xargs builds its command lines. Only one instance of `{}' is allowed within the command. The command is executed in the starting directory.
所以,你可以這樣做:
find /media/d/folder1/ -maxdepth 1 -type f -exec cp {} -t /home/userA/folder2
請注意,這也會複製隱藏文件。