Unix目录问题

时间:2015-12-22 06:31:50

标签: shell unix grep cat

我有多个文件夹,例如

Folder_1
     sub_folder_1----->1.txt,2.txt,3.txt
     sub_folder_2----->2.txt,5,txt,6.txt
     sub_folder_3----->1.txt,2.txt,3.txt
     sub_folder_4----->1.txt,2.txt,3.txt
     sub_folder_5----->1.txt,2.txt,3.txt


Folder_2
     sub_folder_1----->1.txt,2.txt,3.txt
     sub_folder_2----->1.txt,2.txt,3.txt
     sub_folder_3----->1.txt,2.txt,3.txt
     sub_folder_4----->1.txt,2.txt,3.txt
     sub_folder_5----->1.txt,2.txt,3.txt

..........

每个sub_folders_*里面都有files(.txt)cat,我需要sub_folders并将所有one unique file的所有文件合并到find /home/Arun/Labs/Master -maxdepth 2 -type f -exec cat {} \;中。

我尝试使用<input type="button" id="buy_remove" name="del_item" value="Remove" class="bt" onClick="deleteRow_payment();"/> function deleteRow_payment() { $('DIV.product-item_payment').each(function(index, item){ $(item).remove(); add_payment(); }); }

但无法实现。

有关如何做到这一点的任何建议吗?

3 个答案:

答案 0 :(得分:2)

cat Folder_*/*/*.txt > new_file.txt

如果您不知道目录树有多深:

shopt -s globstar
cat **/*.txt > new_file.txt

来自man bash

  

globstar:如果设置,路径名扩展上下文中使用的模式**将匹配所有文件以及零个或多个目录和子目录。如果模式后跟一个/,则只有目录和子目录匹配。

答案 1 :(得分:1)

如果文件夹中没有涉及复杂的结构,您可以简单地使用带有2个for循环的shell脚本来实现此目的

假设:结构与问题中给出的结构完全相同,只有第一级目录和.txt文件中的所有数据

#read_recursive.sh
for foldr in *
    do
      cd foldr
      for subf in *
      do
        cat *.txt
      done
      cd ..
    done

$ sh read_recursive.sh | uniq > final_output.txt

答案 2 :(得分:1)

find xargs应该处理:

find /home/Arun/Labs/Master -maxdepth 2 -name '*.txt' -print0 | xargs -0 cat > /tmp/output.txt