我有很多文本文件分布在几个目录中.我想对所有文件进行排序并创建一个文件名列表(在文本文件中),但是以一种特殊的定义顺序.我最初的想法是从这些目录中随机选择第一个文件* 1.txt.然后重复该过程(* 2.txt,* 3.txt等),直到所有文件名都在列表中.我怎样才能在bash中实现这一目标?
基础:
从1个目录中随机选择文件:
shuf -n1 –e *
从1目录中选择第一个文件:
ls | sort -n | head -1
例:
更新:文件结构/真实文件名格式(这只是几个文件,有几百个)
初始订单:
media/sf_linux_sandbox/papers/
|-- semester_1
| |-- cs630-linux_research_paper-fname_lname-001.txt
| |-- cs635-progamming_languages-fname_lname-002.txt
| |-- cs645-java_programming_paper-fname_lname-003.txt
| `-- cs900-computer_robotics_capstone-fname_lname-004.txt
|-- semester_2
| |-- cs650-software_methodologies-fname_lname-001.txt
| |-- cs675-nosql_db_research-fname_lname-002.txt
| |-- cs700-artificial_intelligence_reasearch-fname_lname-003.txt
| |-- cs800-algorithms_and_computational_complexity-fname_lname-004.txt
| |-- cs825-database_systems_internals-fname_lname-005.txt
| `-- cs850-computer_graphics-fname_lname-006.txt
|-- semester_3
|-- cs725-web_programming_technologies-fname_lname-001.txt
|-- cs750-data_programming-fname_lname-002.txt
`-- cs775-hardware_software_interface_paper-fname_lname-003.txt
我想要生成的输出/结果(随机调整文件,但保持数字顺序):
results.txt
/filepath/cs650-software_methodologies-fname_lname-001.txt
/filepath/s630-linux_research_paper-fname_lname-001.txt
/filepath/cs725-web_programming_technologies-fname_lname-001.txt
/filepath/cs635-progamming_languages-fname_lname-002.txt
/filepath/cs750-data_programming-fname_lname-002.txt
/filepath/cs675-nosql_db_research-fname_lname-002.txt
/filepath/cs645-java_programming_paper-fname_lname-003.txt
/filepath/cs775-hardware_software_interface_paper-fname_lname-003.txt
/filepath/cs700-artificial_intelligence_reasearch-fname_lname-003.txt
/filepath/cs900-computer_robotics_capstone-fname_lname-004.txt
/filepath/cs800-algorithms_and_computational_complexity-fname_lname-004.txt
/filepath/cs825-database_systems_internals-fname_lname-005.txt
/filepath/cs850-computer_graphics-fname_lname-006.txt