使用脚本、来自 excel 文档的变量重命名文件夹

使用脚本、来自 excel 文档的变量重命名文件夹

Linux 文件系统

我有一个包含 1500 个文件夹的目录。我希望使用一个 excel 文档,其中一列包含 1500 个文件夹名称,下一列包含一个唯一 ID。我希望编写脚本,以便脚本将文件夹重命名为新的唯一 ID。有人能帮我吗?虽然我不知道如何编写脚本,但看起来很容易。有人可以提供在线脚本的链接吗(我找不到)。

Look at volume A for folder Var#1 (from excel)

if present on Volume A then mv Var#1 to Var#2 (from excel)

loop and grab next line of excel doc

答案1

好的,如下所示:

对于我在$(cat test.csv)中

dir1=$(echo $i|sed's/,.*//')

dir2=$(echo $i|sed's/.*,//')

如果[-d $ dir1]

然后

如果[-d $ dir2]

然后

echo $dir2 存在,跳过从 $dir1 到 $dir2 的移动

别的

mv $目录1 $目录2

完毕

答案2

所以,我是 Linux、Unix 和 Mac 用户,会编写 Perl 和 Bash 脚本。如果您有 Power Shell 或 Cygwin,您可以执行以下操作,Windows 可能也有此功能,但不要太担心:

无需完成整个事情,我认为您应该能够按照自己想要的方式进行修改...

  • 将数据保存到 csv 文件 (somefile.csv)
  • 在 bash shell 中

bash> 对于 temp_linecat somefile.csv

回显 mv $temp_line |sed's/,/ /'

完成>somefile.sh

在您确定它会执行您想要的操作之前,请不要运行以下行!

bash>. ./somefile.sh

应该就是这样了...注意,这是一个快速破解,可以编写更多错误检查和其他内容,这是我首先想到的:)您可能遇到的另一个问题是文件/目录名称中的空格,只需添加引号即可。如果您需要检查目录是否存在,您可以添加如下 if 语句:

bash>如果 [ -d ‘目录名称’ ]; 然后 ... ;fi

不用写出来,这些应该已经足够了。我可能会在之后得到启发,并在后续帖子中写下这些。

答案3

这是没有答案,但我将其作为一个输入,因为评论不允许采用正确的格式,或者输入这么多的文字。

显然,现有文件夹的名称是唯一的(假设它们要么都在同一个超级文件夹中,要么以完整路径名显示 - 正如@nerdwaller 指出的那样)。第二列中的唯一 ID 根据定义是唯一的。这两列是唯一的(不重叠)吗?考虑以下数据:

          旧名称新唯一 ID
是或不是,1
这就是问题所在。2
快来抢购!
跳过懒狗。4
             ⋮ ⋮
Once_upon_a_midnight_dreary,40
当我思考的时候,41
虚弱和疲倦,42
             ⋮ ⋮
56 的答案
人生终极问题,57
宇宙万物皆有 58
42 59
等等... 60

如果/当您尝试重命名weak_and_weary,为时42,您将与现有42文件夹发生冲突。解决此问题的最佳方法可能是检查旧文件夹名称中是否包含与唯一 ID 模式匹配的名称,然后手动处理它们。

相关内容