我有一个脚本,可以将多个子文件夹和存档中的所有文件搜索到 tar。我的脚本是
for FILE in `find . -type f -name '*.*'`
do
if [[ ! -f archive.tar ]]; then
tar -cpf archive.tar $FILE
else
tar -upf archive.tar $FILE
fi
done
Run Code Online (Sandbox Code Playgroud)
find 命令给了我以下输出
find . -type f -iname '*.*'
./F1/F1-2013-03-19 160413.csv
./F1/F1-2013-03-19 164411.csv
./F1-FAILED/F2/F1-2013-03-19 154412.csv
./F1-FAILED/F3/F1-2011-10-02 212910.csv
./F1-ARCHIVE/F1-2012-06-30 004408.csv
./F1-ARCHIVE/F1-2012-05-08 190408.csv
Run Code Online (Sandbox Code Playgroud)
但是FILE变量只存储路径的第一部分./F1/F1-2013-03-19,然后是下一部分160413.csv。
我尝试使用readwhile 循环,
while read `find . -type f -iname '*.*'`; do ls $REPLY; done
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误
bash: read: `./F1/F1-2013-03-19': not a valid …Run Code Online (Sandbox Code Playgroud) 我所有的音乐都在一个文件夹中/media/kalenpw/MyBook/Music/ABunchOfOtherFoldersWithFilesInside。我想复制所有的 mp3,/media/kalenpw/HDD/Music所以我使用了:
cp -R /media/kalenpw/MyBook/Music/*.mp3 /media/kalenpw/HDD/Music
Run Code Online (Sandbox Code Playgroud)
然而,这只复制了根音乐文件夹中的 mp3,并没有打开任何艺术家子目录并复制这些文件。
我的印象-R是递归复制所有文件。我怎样才能实现上述目标?