我正在尝试将我的图片目录中的所有视频文件移动到我的电影目录中。顺便说一句,这是在Mac上。
我以为我可以通过“ls -R”
简单地通过我所有的图片目录进行递归然后我把它传递给grep -i“.avi”这给了我所有的电影文件。
现在我将这些值传递给“mv -n $ 1~ / Movies”,我希望将这些文件移到Movies文件夹中。
我有几个问题。 1.列出文件时,“ls -R”不会列出路径。所以我想我可能无法移动文件。 2.我似乎无法将文件名分配给mv命令中的$ 1。
我的命令总是如此:注意我从〜/ Pictures
运行它ls -R | grep -i ".avi" | mv -n $1 ~/Movies
所以现在我不确定哪个部分失败但是我确实收到了这个错误:
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
如果我删除'mv'命令,我会得到一个没有路径的avi文件列表。示例如下:
4883.AVI
4884.AVI
4885.AVI
4886.AVI
4887.AVI
...
任何人对如何获得'ls'中的路径或如何在'|'之间传递值有任何想法命令。
感谢。
答案 0 :(得分:1)
最好使用find
命令:
$ find -name "*.avi" -exec mv {} ~/Movies \;
答案 1 :(得分:0)
bash for
循环可以帮助您轻松找到所有avi
个文件
shopt -s nullglob
for file in *.avi
do
mv "$file" "$file" ~/Movies/"$file"
done
答案 2 :(得分:0)
你应该像这样创建简单的copy.sh
#!/bin/bash
cp $1 ~/Movies/
运行命令./copy.sh" $(ls | grep avi)"
答案 3 :(得分:-1)
你可以通过多种方式实现这一目标,我认为其中之一:
ls -R | grep -i ".avi" | while read movie
do
echo " moving $movie"
mv $movie ~/Movies/
done
答案 4 :(得分:-1)
使用反引号
mv `ls *.avi` ~/Movies