【问题标题】:Read csv for file first column and search for directory on filesystem identical to the values in first column using UNIX shell script读取文件第一列的 csv 并使用 UNIX shell 脚本在文件系统上搜索与第一列中的值相同的目录
【发布时间】:2013-03-01 16:02:43
【问题描述】:

我有一个包含多列的 CSV 文件。

但我想使用 LINUX shell 脚本 读取此 CSV 文件,仅用于 第一列 标题名为 Key 的标题下有值

TST-1, TST-2, ..., PROJ-1,PROJ-2,....

选择第一个值-TST-1,我需要检查目录/opt/usr/tomcat/home/data/attachments/下是否有名为TST-1的子目录。如果是,那么我想将此目录移动到备份设备。同样对于第一列 Key

下的剩余值

我可以在不使用 CSV 文件的情况下通过在 Linux 中使用 findrsync 命令移动目录,但是我得到的数据存储在 CSV 文件中,我很不熟悉使用 Linux shell 脚本读取 CSV

谁能帮帮我!

谢谢, 纳伦德拉。

【问题讨论】:

    标签: linux shell csv


    【解决方案1】:

    尝试这样做:

    value=$(awk -F, 'NR>2{print $1}' file.csv)
    if [ -d "/opt/usr/tomcat/home/data/attachments/$value" ]; then
        mv "/opt/usr/tomcat/home/data/attachments/$value" backup_drive
    fi
    

    注意:如果你的CSV 很简单,那没关系,但如果它有一些像"aa,aa", xxx, zzz 这样的值,最好使用perlrubypythonCSV 解析器

    【讨论】:

    • 谢谢!在您的帮助下,我能够读取 CSV 文件。但是使用命令 value=$(awk -F, 'NR>1 {print $1}' test.csv),当我回显 o/p 的值时,我得到连续的 o/p -> "TST-1" " TST-2"。我无法将值“TST-1”与“TST-2”等分开......使用这个单一条目“TST-1”,“TST-2”,......我检查是否存在名为 TST-1、TST-2、... 的目录并使用命令移动它们 - find /opt/XXXX/tomcat/data/attachments -name $value -exec rsync -avR --remove-sent-files {} /路径/到/备份/驱动器/ \;非常感谢任何帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    相关资源
    最近更新 更多