一次移动一批文件

Move a batch of files one at a time

正在编写 linux 脚本以将文件从一个文件夹移动到另一个文件夹。但是它需要首先显示文件的属性,例如大小、创建日期、名称等,然后询问用户是否要复制它。

我可以批量复制,但不确定如何查看一个文件的属性然后询问用户是否要复制它,然后移动到文件夹中的下一个文件。

如有任何帮助,我们将不胜感激。

我会复制我已经完成的代码,但是没有一个与问题相关,到目前为止我已经让它处理两个文件夹参数(源和目标)并创建一个目标文件夹,如果指定的一个不存在。

总结一下:

谢谢!

康纳

Dialog命令是你的朋友。不要尝试 "get" 文件属性,只需使用 ls -al '$filename'

以下脚本将起作用:

dir=
newdir=
for file in $dir/*
do
    filesize=$(stat -f%z $file)   # stat command finds size of file in bytes
    filename=$(basename $file)
    echo "Name of file: $filename"
    echo "File size: $filesize bytes"
    ls -l $file     #shows permisions, parent directory, last modification date...
    read -r -p "Would you like to copy file?:" answer
    if [[ $answer =~ ^(yes|y| ) ]]  # checks possible user entries
    then
        cp $file $newdir/$filename  #copies file from original dir to new dir
    else
        echo "file not copied"
    fi
done

对于读取用户输入的 read 命令,这里是从手册页中获取的描述:

-p prompt
    Display prompt, without a trailing newline, before attempting
    to read any input. The prompt is displayed only if input is coming from a
    terminal.

-r   
    If this option is given, backslash does not act as an escape character.
    The backslash is considered to be part of the line. In particular, a backslash-newline
    pair may not be used as a line continuation. 

脚本是 运行 这样的:

./script original new

其中 original 是要读取的目录,new 是您要将文件复制到的目录。