1

我目前正在阅读练习册,我必须创建一个 shell 脚本,该脚本将从任何目录中找到一个文件并将其移动。

虽然我遇到了困难,因为文件可能在任何目录中(所以我没有找到它的路径)。我已经使用了带有 -print 标志的 find 选项,那么下一步使用 mv 命令移动它会是什么?

到目前为止,我的代码读取了一个变量,检测是否输入了一个文件,它是一个文件还是一个目录,或者它是否存在。

如上所述的下一阶段是找到文件,然后将其移动到“测试”文件中。

如果有人有任何建议,将不胜感激。

#!/bin/bash

bin="deleted"

if [ !  -e bin ] ; then
    mkdir $bin
fi

file=$1

#error to display that no file has been entered
if [[ ! $file ]]; then
    echo "no file has been entered"
fi

#file does not exist, display error message
if [[ !  -f $file ]]; then
    echo "$file does not exsist!"
fi

#check to see if the input is a directory
if [[ -d $file ]]; then
    echo "$file is a directory!"

if [[ -e $file ]]; then *** move to test folder
****This is where I am having the problems
4

1 回答 1

3

find / -type f -name FILENAME | xargs -I foobar echo mv foobar /tmp (删除echo以使命令实际工作..我把它放在那里只是为了避免意外移动文件只是为了尝试命令)

请注意,这-I foobar意味着用找到的文件的完整路径mv foobar /tmp替换字符串。foobar

例如,尝试:find / -type f -name FILENAME | xargs -I foobar foobar is a cool file

于 2013-09-10T22:02:59.507 回答