2017-10-09 88 views
0

我是使用命令行進行操作的新手,所以如果這個問題很明顯,請原諒我。我想從一個包含許多子目錄的目錄中移動某種類型(.aiff)的所有文件。文件結構如下所示:複製終端中多個目錄中的文件

directory 
- subdir1 
    -- sound.aiff 
    -- other.txt 
- subdir2 
    -- sound2.aiff 
    -- other2.txt 

我已經使用類似cp -R /Users/me/directory/*.aiff /Users/me/newdirectory嘗試,但我得到一個「沒有這樣的文件或目錄」錯誤。我不知道如何指定我想要在子目錄中複製的文件必須是.aiff文件。

回答

2

試試這個:

cp -R /Users/me/directory/*/*.aiff /Users/me/newdirectory 

不過,也許目的地/Users/me/newdirectory丟失。

你可以做驗證這一點:

file /Users/me/newdirectory 

如果不存在該目錄將打印如下錯誤:

Users/me/newdirectory: cannot open `/Users/me/newdirectory' (No such file or directory) 

創建的目錄:

mkdir /Users/me/newdirectory 

接下來,嘗試再次複製這些文件,如果您想要將它們移動使用mv而不是cp

另一種方法是使用命令find,例如:

find /Users/me/directory -type f -iname "*.aiff" -exec mv {} /Users/me/newdirectory \; 

在這個例子中,該命令find會在目錄/Users/me/directory/僅搜索的文件-type f爲此(不區分大小寫)在*.aiff爲每個文件發現它將執行命令mv exec mv {} /Users/me/newdirectory{}是一個佔位符。

搬家前,你可以通過只查找所需類型的測試命令:

find . -iname "*.aiff" 

這將爲文件中搜索執行該命令的目錄中,注意.代替/Users/me/directory/

相關問題