【问题标题】:Move and rename Xml files移动和重命名 Xml 文件
【发布时间】:2018-05-07 11:18:20
【问题描述】:

我在 /home/ss30 中有 500 个这样的 xml 文件

0.xml 1.xml 2.xml ...... 500.xml

/home/ss30/ 中的 500 个文件夹具有这些结构 "ss30-Username" 虽然用户名总是不同,但所有文件夹都以 ss30- 开头-

所有文件夹在里面都有相同的 dir+ 档案我想要的是将所有 .xml 放在一个特定文件夹中,这个文件夹中的每个帐户名称都是 /templates/。 并且曾经在 /templates/ 中将其重命名为 templates.xml 如果 0.xml 进入一个文件夹或另一个文件夹,只需一个声明即可。所有档案的结构都相同,但它们具有不同的值,因此所有 .xml 档案看起来都不同。

所有 .xml 都有不同的值但结构相同 我需要每个文件夹 /templates/ 1 个 xml。

Ubuntu 16.04 最小版

【问题讨论】:

  • 您有 500 或 501 个 xml 文件?哪些 xml 文件应该放在哪个 ss30-username 文件夹中?您写了“特定”文件夹,然后指定哪个?你能格式化你想做的事情(标点符号)吗?您想将所有 xml 文件复制到每个用户目录内的模板文件夹中吗?哪一个? .xml 文件的结构和 .xml 文件中的值是否重要?
  • 它们总共有 1335 个 xml 文件,我只放了 500 个作为一个简单而完整的数字。所有 xml 文件在不同的值中都有相同的变量,如果 0.xml 进入一个文件夹或其他文件夹对任何用户都可以正常工作,那么我需要每个用户有不同的 xml 值 = 不同的 xml 文件。不,我想为每个用户复制 1 个 xml 文件,而不是向所有用户复制所有文件。每个用户 1 个,但始终有 1 个不同,不一样。所有的结构都是相同的,xml 文件已经使用 java 程序创建,如果您需要了解或粘贴所有文件夹,我可以在此处粘贴代码。对不起,如果我解释不好。

标签: linux unix ubuntu-16.04 sysadmin


【解决方案1】:

此 bash 脚本会将已排序的 xml 文件列表与按字母顺序排列的 ss30-Username 文件夹列表配对,然后将每个 xml 文件移动到名为 ss30-Username/template/template.xml 的配对目的地。
我没有测试脚本,希望它对你有帮助。

#!/bin/bash
set -euo pipefail

# change the directory to the first argument
cd "$1"
# all xml files named starting with a number followed by anything, sorted
allxmls=$(printf "%s\n" [0-9]*.xml | sort)
# all user folders sorted
allfolders=$(printf "%s\n" ss30-* | sort)
# check if number of xmls is the same as folders
if [ $(echo "$allxmls" | wc -l) -ne $(echo "$allfolders" | wc -l) ]; then
   echo "ERROR number of xmls is different then number of folders"
   echo "Terminating..."
   exit 1
fi
# pair xmls with folders
pairs=$(paste <(echo "$allxmls") <(echo "$allfolders"))
# for every pair read xml and folder
while read xml folder; do
   # create template folder inside folder
   mkdir -v -p "$folder"/template
   # move xml inside the folder and rename it to template.xml
   mv -v "$xml" "$folder"/template/template.xml
# read pairs
done < <(echo "$pairs")

如果将其保存到名为./script.sh 的文件中,则为其添加可执行权限chmod +x ./script.sh 并运行它,第一个参数是包含xml 文件和ss30-Username 文件夹的文件夹的路径,例如./script.sh /path/to/xml_and_ss30_folders .

【讨论】:

  • 谢谢老兄,我只是删除了 mkdir,因为每个用户名中的文件夹已经存在,我也退出了路径,我从同一个目录执行所有内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多