【问题标题】:Bash Script To Check for Duplicate File Names from Command Line Arguments从命令行参数检查重复文件名的 Bash 脚本
【发布时间】:2015-05-05 03:26:18
【问题描述】:

我正在编写一个 shell 脚本,它将所有文件从命令行复制到一个目录。如果命令行参数包含任何重复文件,我想提示用户覆盖现有文件(它现在应该在目录中),不要复制它,或者重命名它然后复制它。

解决这个问题的最佳方法是什么?

这是我在想的一些伪代码:

for var in "$@"
do
  for file in "$dirName" #unsure about this syntax too
  do
    if [ file or directory with name "$fileName" exists]; then
       prompt user with options #i can handle this part :)
    else  
      mv $var $dirName
    fi
  done
done

【问题讨论】:

  • 忽略问题让cp解决?
  • cp 会用正在复制的文件覆盖目录中的文件,不是吗?
  • 使用cp -i 表示“交互式” - 它会在覆盖之前提示。
  • 但如果我说“不”,那么它不会移动该目录中的文件。我想为用户提供覆盖、重命名或不执行任何操作的选项。

标签: bash file shell scripting duplicates


【解决方案1】:

你把事情复杂化了。

for var in "$@"
do
  if [ -e "$dirname/$var" ]; then
       prompt user with options #i can handle this part :)
  else  
      mv "$var" "$dirName"
  fi
done

顺便说一句,确保在任何地方都使用适当的引用。包含文件名的变量基本上应该总是用双引号引起来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-14
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2017-10-07
    • 2017-12-29
    相关资源
    最近更新 更多